自动SSH和执行脚本

时间:2010-04-01 13:51:24

标签: bash scripting shell

我有大约12台计算机,每台计算机都有相同的脚本。此脚本仅ping所有其他计算机,并打印出计算机是“可访问”还是“无法访问”。但是,使用ssh手动登录每台计算机执行此脚本效率很低。

假设我已登录到节点1.有没有办法让我使用SSH自动登录到节点2-12,执行ping脚本,将结果传送到文件,注销并继续下一台机器?某种bash shell脚本?

我害怕我在这里不知所措,因为我以前没有使用过shell脚本的经验。

4 个答案:

答案 0 :(得分:3)

由于脚本位于其他计算机上,因此您可以让ssh在那里运行命令:

ssh $hostname my_script >> results_file

当你指定这样的命令时,它会执行而不是登录shell。

我会让你知道如何循环主机名!

答案 1 :(得分:0)

您需要使用的一个技巧是为每个主机设置预授权密钥。然后你可以在一台主机上运行一个脚本,运行'ssh hostname command>之类的东西。 log.hostname'

答案 2 :(得分:0)

此脚本可能正是您要查找的内容:它允许您通过ssh在多个远程计算机上执行一个命令(可以是您的脚本)。这是一个带有bash源的简单脚本,因此您应该能够根据需要对其进行自定义:

http://www.heinzi.at/projects/upgradebest.sh/

答案 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_ARG pwd $ 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 /)

希望它有用