PDA

View Full Version : Please help with a BASH script!!! PLEASE READ



bizarro
10-08-2004, 10:23 PM
I have a remastered Knoppix CD I'd like to have the root password changed automatically. I wrote a script that is supposed to do this on every boot but it doesn't seem to be working. Can someone please check the script and tell me where its going wrong?

Thanks!



#!/bin/bash
OFFSET=`ntpdate -q 192.5.41.41 | tail -n1 | cut -f4 -d':' | cut -f7 -d' ' | cut -f1 -d'.'`
TRUEDATE=$(($OFFSET / 86400))
date --set="$TRUEDATE days" > /dev/null

DAYS=$((`date +%s` / 86400))
FORUMULA=`date +%B | md5sum | cut -f1 -d' '`
ROOTPW=`echo $FORMULA | openssl passwd -1 -stdin`
EPOCHEXPIRE=$((`cat /root/.epoch` + 365)) ## .epoch is created when cd is created...basically its EPOCHDATE=$((`date +%s` / 86400)) > /root/.epoch

echo "`grep -v \:root /etc/passwd`" > /etc/passwd
echo "`grep -v root /etc/shadow`" > /etc/shadow

echo root:x:0:0:root:/root:$RL >> /etc/passwd
echo root:$ROOTPW:$DAYS::::$EPOCHEXPIRE:: >> /etc/shadow

Markus
10-08-2004, 10:36 PM
FORUMULA=`date +%B | md5sum | cut -f1 -d' '`
One thing that strikes out is a typo there.

smxsteve
10-09-2004, 01:17 AM
You can't redirect into the same file.
echo "`grep -v \:root /etc/passwd`" > /etc/passwd.tmp
echo "`grep -v root /etc/shadow`" > /etc/shadow.tmp

echo root:x:0:0:root:/root:$RL >> /etc/passwd.tmp
echo root:$ROOTPW:$DAYS::::$EPOCHEXPIRE:: >> /etc/shadow.tmp

mv -f /etc/passwd.tmp /etc/passwd
mv -f /etc/shadow.tmp /etc/shadow

You may need to:
chmod u+w /etc/passwd /etc/shadow
to be able to write to them and then
chmod u-w /etc/passwd /etc/shadow

bizarro
10-09-2004, 01:21 AM
AH YES...thank you!

that line now reads as follows...


MONTH=`date +%B`
FORMULA=`echo $MONTH | md5sum | cut -f1 -d' '`

Still does not work though :(

smxsteve
10-09-2004, 01:21 AM
Oops sorry, I made a mistake.

Don't do it like this:
echo "`grep -v \:root /etc/passwd`" > /etc/passwd.tmp
echo "`grep -v root /etc/shadow`" > /etc/shadow.tmp

Do it like this:
grep -v \:root /etc/passwd > /etc/passwd.tmp
grep -v root /etc/shadow > /etc/shadow.tmp

smxsteve
10-09-2004, 01:23 AM
Also, shouldn't your grep filtering of the root entry look like...

grep -v '^root:' ...

bizarro
10-09-2004, 01:59 AM
in editing the script again i found the problem...basically a typo!...FORMULA is mispelled if you read below...causing a blank pw everytime...

smxsteve...

have you tried the commands? it works...and works nicely... ;) as for the grep -v '^root:' ...
since on my knoppix cd there is another account that has /root as its home i have to separate that from this one...

Markus...

thank you!!! you found it! i was just looking in the wrong spot for typo...

here is my current working portion of my aioscript that changes the admin password at boot time...just make sure you keep the formula a secret... ;)



#!/bin/bash
OFFSET=`ntpdate -q 192.5.41.41 | tail -n1 | cut -f4 -d':' | cut -f7 -d' ' | cut -f1 -d'.'`
TRUEDATE=$(($OFFSET / 86400))
date --set="$TRUEDATE days" > /dev/null

DAYS=$((`date +%s` / 86400))
FORMULA=`date +%B | md5sum | cut -f1 -d' '`
ROOTPW=`echo $FORMULA | openssl passwd -1 -stdin`
EPOCHEXPIRE=$((`cat /root/.epoch` + 365)) ## .epoch is created when cd is created...basically its EPOCHDATE=$((`date +%s` / 86400)) > /root/.epoch

echo "`grep -v \:root /etc/passwd`" > /etc/passwd
echo "`grep -v root /etc/shadow`" > /etc/shadow

echo root:x:0:0:root:/root:$RL >> /etc/passwd
echo root:$ROOTPW:$DAYS:::::$EPOCHEXPIRE: >> /etc/shadow

If you guys want to know what is my aioscript i have a thread in the ms windows section about it :)

thank you for your input...i knew it was something simple :oops:

smxsteve
10-09-2004, 07:20 AM
Oh I see what you are doing! I didn't read it clearly. I thought your redirection was part of the problem as well as the typo.
What you are doing re-creating the files minus the root entries. Neet! That's a good way to do it!

Sorry for my bogus posts! :oops: