[Unix] chpasswd - Zmiana hasła w konsoli

0

Mam następujący problem.

Piszę właśnie skrypt do masowego zarządzania kontami użytkowników na serwerze unixowym - takie małe narzędzie dla administratorów. Jedną z funkcji ma być masowe zmienianie haseł i właśnie to sprawia mi spory problem.
Mianowicie: każdy wie, że mamy w unixie takie coś jak passwd, ale to odpada od razu bo to jest wizard, gdzie użytkownik musi wprowadzić stare i nowe hasło z klawiatury w odpowiedzi na zadawane przez program pytania. Do skryptu się zatem zupełnie nie nadaje. Dotarłem więc do innego polecenia - chpass, które zgodnie z manualem powinno rozwiązać problem - przyjmuje parę user:password ze standardowego wejścia i ustawia danemu użytkownikowi dane hasło. Tylko że za diabła nie mogę z tym poleceniem dojść do ładu.

Wpisuję w konsoli
echo 'user:haslo' | sudo chpasswd
lub
sudo chpasswd < chpass_tmp
gdzie chpass_tmp to plik tekstowy formatu user:hasło

i w obu przypadkach dostaję po dobrych kilku sekundach oczekiwania, komunikat następującej treści:

chpasswd: nie mogę zablokować pliku z hasłami

Identycznie to wygląda, gdy zamiast przez sudo, wywołam to przechodząc wcześniej na konto root'a przez su.

Wie ktoś jak to wywołać zeby zrobiło swoje i przestało narzekać? :)

Pozdrawiam.

0
SurfiX napisał(a)

ale to odpada od razu bo to jest wizard, gdzie użytkownik musi wprowadzić stare i nowe hasło z klawiatury w odpowiedzi na zadawane przez program pytania. Do skryptu się zatem zupełnie nie nadaje.

Mozesz to obejsc uzywajac expect http://www.linuxjournal.com/article/3065

0

kurna, wiecie co...

jak lubię systemy unixowe (szczególnie linux, obecnie używam Ubuntu 8.04), tak czasami ich zrozumienie przerasta możliwości mojego umysłu co do pojmowania świata.

echo 'user:haslo' | sudo chpasswd

Nagle ni z gruchy ni z pietruchy zaczęło działać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1