Назад | Перейти на главную страницу

Как лучше всего в Windows управлять несколькими сеансами ssh (через замазку?) Для просмотра кластерных серверов?

Есть инструмент под названием 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