URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 80888
[ Назад ]

Исходное сообщение
"Есть скрипт. но он работает не совсем так, как хотелось бы....."

Отправлено Rinsy , 25-Июн-08 08:51 
Здравствуйте! Есть скрипт для смены паролей пользователей в автоматическом режиме:

#!/bin/sh
USERNAME=user
USERPASS=password
TEMPFILE=/var/tmp/pass
echo $USERPASS > $TEMPFILE
echo $USERPASS >> $TEMPFILE
echo >> $TEMPFILE
passwd $USERNAME < $TEMPFILE
rm -f $TEMPFILE

И вроде должен работать, но вся загвоздка в том, что при выполнении команды passwd открывается диалоговое окно для ручного ввода данных, при этом данные из временного файла не берутся. Не могу разобраться, в чем загвоздка.
Если кто может, помогите дельным советом или укажите на ошибку в скрипте...
Заранее благодарен...


Содержание

Сообщения в этом обсуждении
"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено axbat , 25-Июн-08 15:27 
>данные из временного файла не берутся. Не могу разобраться, в чем
>загвоздка.
>Если кто может, помогите дельным советом или укажите на ошибку в скрипте...

не знаю, как в Solaris, но, возможно, так не особо отлично от прочих *NIX. там ведь наверняка надо подтверждать пароль при смене? такой "полуинтерактивный" процесс. может, есть смысл посмотреть в сторону скриптов на expect?


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено GloryS , 25-Июн-08 19:18 
>[оверквотинг удален]
>passwd $USERNAME < $TEMPFILE
>rm -f $TEMPFILE
>
>И вроде должен работать, но вся загвоздка в том, что при выполнении
>команды passwd открывается диалоговое окно для ручного ввода данных, при этом
>данные из временного файла не берутся. Не могу разобраться, в чем
>загвоздка.
>Если кто может, помогите дельным советом или укажите на ошибку в скрипте...
>
>Заранее благодарен...

Не знаю как в Солярисе, в линухе есть опция --stdin..
Кстати, во фряхе ее нету...
Но выход есть, см. expect (типа шелл для интерактивных приложений)


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено Gennadi , 25-Июн-08 20:23 

>Но выход есть, см. expect (типа шелл для интерактивных приложений)

http://www.wellho.net/mouth/1174_Installing-Tcl-and-Expect-o...


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено Vasia , 25-Июн-08 21:51 
>
>>Но выход есть, см. expect (типа шелл для интерактивных приложений)
>
>http://www.wellho.net/mouth/1174_Installing-Tcl-and-Expect-o...

гораздо проще поставить http://empty.sourceforge.net


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено skgennady , 26-Июн-08 07:52 
>Не знаю как в Солярисе, в линухе есть опция --stdin..
>Кстати, во фряхе ее нету...

Есть, но по-другому выглядит.


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено GloryS , 26-Июн-08 11:12 
>>Не знаю как в Солярисе, в линухе есть опция --stdin..
>>Кстати, во фряхе ее нету...
>
>Есть, но по-другому выглядит.

Ради повышения уровня знаний...Как?

#passwd -h
passwd: option requires an argument -- h
usage: passwd [-ly] [-d domain] [-h host] [user]
# uname -a
FreeBSD carbase 6.2-STABLE FreeBSD 6.2-STABLE #1: Mon Mar 26 20:48:42 MSD 2007

Или в ней через конвейер можно? (типа echo pass | passwd username)


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено skgennady , 27-Июн-08 07:27 
>[оверквотинг удален]
>
>#passwd -h
>passwd: option requires an argument -- h
>usage: passwd [-ly] [-d domain] [-h host] [user]
># uname -a
>FreeBSD carbase 6.2-STABLE FreeBSD 6.2-STABLE #1: Mon Mar 26 20:48:42 MSD 2007
>
>
>Или в ней через конвейер можно? (типа echo pass | passwd username)
>

Под рукой фряхи нет, но уточните сами. Примерно так:
echo pass | pw useradd qwe -h0
если пароль открытый, и так:
echo pass | pw useradd qwe -H0
если зашифрованный.


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено Rinsy , 27-Июн-08 07:54 
>Под рукой фряхи нет, но уточните сами. Примерно так:
>echo pass | pw useradd qwe -h0
>если пароль открытый, и так:
>echo pass | pw useradd qwe -H0
>если зашифрованный.

Фряха это конечно хорошо. Ну а ближе к теме, по скрипту то как?
Я еще не сильно в Unix системах разбираюсь


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено skgennady , 27-Июн-08 09:47 
>Фряха это конечно хорошо. Ну а ближе к теме, по скрипту то
>как?
>Я еще не сильно в Unix системах разбираюсь

Вам же все ответили уже. И про линукс и про фрибсд есть подсказки. Используйте.


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено skgennady , 27-Июн-08 09:49 
>Я еще не сильно в Unix системах разбираюсь

Кстати, есть в линуксе еще chpasswd. Посмотрите маны на эту тему, если нужно сразу нескольким пользователям пароли поменять.


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено Gennadi , 27-Июн-08 16:14 

Как пример скрипта:

=====================================================
#!/bin/sh
USERNAME="Rinsy"
USERPASS="SeCreT"

echo "#!/usr/bin/expect -f
spawn passwd $USERNAME
expect  \"Password:\" { send \"$USERPASS\\n\"}
expect  \"Password:\" { send \"$USERPASS\\n\"}
expect \"#\" {send \"exit\\n\"}
" > _TMP
chmod 755 _TMP
./_TMP
rm -f _TMP
exit
===================================================


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено skgennady , 30-Июн-08 11:06 
>[оверквотинг удален]
>spawn passwd $USERNAME
>expect  \"Password:\" { send \"$USERPASS\\n\"}
>expect  \"Password:\" { send \"$USERPASS\\n\"}
>expect \"#\" {send \"exit\\n\"}
>" > _TMP
>chmod 755 _TMP
>./_TMP
>rm -f _TMP
>exit
>===================================================

Чего мудрить?
echo "Rinsy:SeCreT" | chpasswd


"Есть скрипт. но он работает не совсем так, как хотелось бы....."
Отправлено Gennadi , 30-Июн-08 14:52 

>Если кто может, помогите дельным советом или укажите на ошибку в скрипте...

Вот я и показал ошибку в его скрипте...

:-)