在Linux下经常写shell脚本,当然少不了需要在各台机器上执行命令了。
假如现在我要在10.2.226.201上写shell并且运行这个shell脚本。可是这个脚本需要在10.2.226.202和10.2.226.203上运行一下命令。如何实现呢?
摸索了几种方法,可是感觉最简单的方法就是通过SSH了。如何实现呢?
1. 在上面三台机器上分别配置用户ssh等效性连接。(注意:在所有机器上都要执行下面的操作)
cd /home/用户名
ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub hostname01
ssh-copy-id -i .ssh/id_rsa.pub hostname02
ssh-copy-id -i .ssh/id_rsa.pub hostname03
SSH等效性连接提供了一种在集群中其他主机上复制文件和执行程序时不需要口令提示的安全方式。
2.配置好SSH等效性连接后,在这三台机器上复制文件和执行程序就不在需要口令了。当然ssh过去也是不需要口令的。
我在10.2.226.201上写的脚步如何在其他机器上执行命名呢?
如果我连到另一台机器上只是执行一个命令可以这样写:
ssh hostname@10.2.226.202 cd /opt/
如果我连到另一台机器上执行多于一个命令可以这样写:
ssh hostname@10.2.226.203 "cd /opt/;pwd"
注意:当多于两个命令时,一定要把所有命令以分号的方式写在双引号里面。
3. 没有第三步了。