I was debugging a problem with virtual users in vsftpd and narrowed down my issue to this: how do I convert the Berkeley DB file filled usernames and passwords into plain text?
I saw that there was a script lying around that used db_load to add users to the virtual file. When I typed db_ and hit TAB I saw various options, the most promising of which was db_dump. However typing:
db_dump /etc/vsftpd/vusers.db
spit out gibberish. What I wanted was a nicely formatted output.
Reading the docs I learned that db_dump -p ... will dump the database in printable form rather than hex. Running db_dump -p generated the following:
VERSION=3 format=print type=hash h_nelem=61 db_pagesize=4096 HEADER=END bob XvLtPKE69eAR2Glc alice TXpZxXNjoyKfhzWG ...
Closer, but still not quite the format I was after. Time to bust out sed and awk. Here's a command line I conjured up:
db_dump -p /etc/vsftpd/vusers.db | \ grep '^ ' | \ awk 'BEGIN { line=1 ; } \ { printf "%s", $0; \ if(line % 2 == 0) { printf "\n"; } \ else { printf "\t"; }; \ line++ }' | \ sed 's/^ //'
The output is now:
bob XvLtPKE69eAR2Glc alice TXpZxXNjoyKfhzWG ...
Where the columns are separated by tabs.
Mission accomplished.
No comments:
Post a Comment