我有大约12台计算机,每台计算机都有相同的脚本。此脚本仅ping所有其他计算机,并打印出计算机是“可访问”还是“无法访问”。但是,使用ssh手动登录每台计算机执行此脚本效率很低。
假设我已登录到节点1.有没有办法让我使用SSH自动登录到节点2-12,执行ping脚本,将结果传送到文件,注销并继续下一台机器?某种bash shell脚本?
我害怕我在这里不知所措,因为我以前没有使用过shell脚本的经验。
答案 0 :(得分:3)
由于脚本位于其他计算机上,因此您可以让ssh在那里运行命令:
ssh $hostname my_script >> results_file
当你指定这样的命令时,它会执行而不是登录shell。
我会让你知道如何循环主机名!
答案 1 :(得分:0)
您需要使用的一个技巧是为每个主机设置预授权密钥。然后你可以在一台主机上运行一个脚本,运行'ssh hostname command>之类的东西。 log.hostname'
答案 2 :(得分:0)
此脚本可能正是您要查找的内容:它允许您通过ssh在多个远程计算机上执行一个命令(可以是您的脚本)。这是一个带有bash源的简单脚本,因此您应该能够根据需要对其进行自定义:
答案 3 :(得分:0)
是的,你可以
实际上你需要2个小脚本如下:
remote_ssh.sh
(其中第一个参数是机器的名称,其余参数是您希望用自己的参数执行的脚本)
示例:remote_ssh.sh node5 "echo hello world"
remote_ssh.sh
如下:
#!/斌/庆典
ALL_ARG = $ @
FST_ARG = $ 1
REST_ARG = $ {ALL_ARG ## $ FST_ARG}
echo“在$ FST_ARG上执行REMOTE命令”
/ usr / bin / ssh $ FST_ARG bash execute_ssh_command.sh $ FST_ARGpwd
$ REST_ARG
execute_ssh_command.sh
如下:
#!/斌/庆典
ALL_ARG = $ @
FST_ARG = $ 1
DIR_ARG = $ 16
REM_ARG =“$ 1 $ 2”
REST_ARG = $ {ALL_ARG ## $ REM_ARG}cd $ DIR_ARG
$ REST_ARG
当然你必须在所有节点的路径中获得这两个脚本(可能〜/ bin /)
希望它有用