因公司测试服务器较多,测试人员会频繁重启脚本,公司要在一台机器上运行脚本时所有机器都运行指定的脚本,方法如下。

A B C三台机器上以当前用户运行如下命令生成本主机的公钥和私钥文件:

root@test[/] ssh-keygen -t rsa

执行上述命令后,目录~/.ssh下会出现两个文件:id_rsaid_rsa.pub

其中,id_rsa.pub为公钥文件,将该文件的内容追加到主机D上~/.ssh目录下的authorized_keys文件中。

例如:

A机将id_rsa.pub文件传到D机:

root@test[/] scp ~/.ssh/id_rsa.pub root@host:/tmp/id_rsa_HOSTA.pub

D机root用户追加authorized_keys文件:
root@test[/] cat /tmp/id_rsa_HOSTA.pub >> ~/.ssh/authorized_keys
接下来,就可以在不输入密码的情况下在远程主机私执行命令了。

命令格式如下:
ssh 远程用户名@远程主机名或IP地址 '远程命令或者脚本'

例如:
root@test[/] sh user@host 'hostname'
root@test[/] ssh user@host '/home/user/handong.sh'
需要特别注意的是:

当远程脚本中使用了一些命令识别依赖于环境变量时,该脚本需要在其第一行中包含执行profile文件的命令。比如,在Bash中,该脚本的第一行为: source ~/.bash_profile 否则,远程脚本可能报错。写到这大家都知道怎么在一台机器上重启脚本时所有指定IP都启动指定的脚本吧!