Есть инструмент под названием cssh для Linux, который можно использовать аналогично тому, что я хотел бы иметь в Windows. В основном я вхожу на серверы, которые идентичны друг другу, и я хотел бы иметь возможность набирать одно и то же в обоих окнах одновременно, чтобы просматривать журналы, выполнять различные команды greps и т. Д.
Отправитель команды PuTTY это то, что вы ищете.
Я знаю, что это старый вопрос, но я нашел его, потому что я использовал Putty Command Sender около пяти лет и всегда думал, что это довольно ужасно. До сих пор я не использовал его достаточно, чтобы искать альтернативы. Только что наткнулся на puttyCluster - https://github.com/mingbowan/puttyCluster - и черт возьми, это нереально. Я зря тратил время на тупую Putty CS и неспособность использовать развернутые + "стыкованные" окна.
Также нашел эти альтернативы, но не пробовал их: cputty clustershish (у меня нет представителя, чтобы публиковать больше ссылок, просто погуглите их).
Вы всегда можете установить кластерыш через CygWin (UNIX-совместимая оболочка для Windows) ... (вы можете найти в Google дополнительную информацию о них) ...
Недавно я придумал, как это легко сделать. Я использовал лист Excel для создания команд cmd, включая log-in putty ssh, а затем скопировал столбцы в окно cmd. он работает как по волшебству, даже если вам нужно настроить команду для каждого сервера.
cmd Command ip user name password Command template
echo /snmp set enabled=yes >temp\10.10.0.9.txt| putty -ssh user_name@10.10.0.9 -pw passwd -m temp\10.10.0.9.txt 10.10.0.9 user_name passwd /snmp set enabled=yes
echo /snmp set enabled=yes >temp\10.10.0.31.txt| putty -ssh user_name2@10.10.0.31 -pw passwd2 -m temp\10.10.0.31.txt 10.10.0.31 user_name2 passwd2 /snmp set enabled=yes
если вы хотите запустить точный список команд на каждом компьютере, вы сохраняете его в файл и используете другой лист для создания пакета командной строки.
cmd Command ip user name password
putty -ssh user_name@192.168.0.21 -pw paaswd -m commands.txt 192.168.0.21 user_name paaswd
putty -ssh user_name@192.168.0.22 -pw paaswd -m commands.txt 192.168.0.22 user_name paaswd
вам нужно будет создать папку с именем temp внутри основной папки putty, и вам может потребоваться настроить ведение журнала putty для сохранения файла для каждого сеанса ip или pear. это мой первый пост, поэтому я не могу загружать изображения.
Помимо использования clusterssh или mtputty, сценарий simpile bash может войти в список удаленных серверов с помощью ssh, скопировать файл на каждый с помощью scp и выполнить сценарий на каждом из серверов. Я новичок в написании сценариев на bash, поэтому, вероятно, это не самый эффективный или лучший вариант, но, похоже, им довольно легко управлять. Мне это показалось проще, чем clusterssh и mtputty. Сохраните этот код в файле с именем copyFileToServers.sh, создайте файл списка серверов, содержащий список IP-адресов или имен серверов, и выполните его, набрав ./copyFileToServers.sh
.
Вам понадобится cygwin для Windows (это единственное место, где я это тестировал). Вам нужно будет установить sshpass (я знаю, что люди действительно ненавидят этот пакет, но мне было слишком лень, чтобы получить ssh-ключи на всех серверах) отдельно, который можно скачать с sourceforge.
Следует отметить, что вам нужно будет войти в систему, используя ssh user@remomte_server
из командной строки вашего административного компьютера для каждого сервера, которым вы хотите управлять. sshpass не будет работать, пока вы вручную не подтвердите добавление ключа ssh для удаленных серверов. Вам нужно сделать это только один раз.
(примечание: по состоянию на июль 2014 года мне не удалось запустить clusterssh в Windows cygwin, поэтому я не мог сказать, насколько хороша / плоха программа в выполнении того, о чем просил OP.)
HOSTS=./serverlist
echo "what file should be copied to the remote servers?"
read file
echo "where should the file be placed on each remote server?"
read dest
echo "what script should be run on all remote nodes?"
read remoteScript
while read line
do
if [ "${#file}" -gt 0 ]
then
sshpass -p 'password' scp $file root@$line:$dest
else
echo "skipping file copy"
fi
if [ "${#remoteScript}" -gt 0 ]
then
sshpass -p 'password' ssh root@$line 'bash -s' < $remoteScript
else
echo "skipping remoteScript execution"
fi
echo $line
done < $HOSTS