Другая возможность: изменить его вручную на одном сервере. Получите зашифрованный пароль из / etc / shadow. Теперь сделайте что-то вроде этого:
for host in $HOST_LIST; do
ssh $host "passwd -p 'encrypted_passwd' user"
done
Конечно, «encrypted_passwd» - это то, что вы получили из / etc / shadow, где вы вручную изменили пароль. А $ HOST_LIST - это список хостов, где вы хотите изменить пароль. Его можно создать просто с помощью: *
export HOST_LIST="server1 server2 server15 server67"
Или, возможно, с файлом (как предлагали другие):
export HOST_LIST=`cat host_list.txt`
Где файл "host_list.txt" содержит список всех систем, где вы хотите изменить пароль.
Редактировать: если ваша версия passwd не поддерживает опцию -p, у вас может быть доступна программа 'usermod'. Приведенный выше пример остается прежним, просто замените «passwd» на «usermod».
Кроме того, вы можете рассмотреть полезный инструмент pdsh , который упростил бы приведенный выше пример до следующего вида:
echo $HOST_LIST | pdsh -Rssh -w- "usermod -p 'encrypted_passwd' user"
Последнее, на что следует обратить внимание: зашифрованный пароль, скорее всего, содержит знак доллара ('$') в качестве разделителя полей. Вероятно, вам придется экранировать те, что есть в вашем цикле for или команде pdsh (т. Е. "$" Становится "\ $").