如何使用shell脚本在远程机器上执行linux命令

时间:2017-06-21 09:57:25

标签: shell

我有一个测试服务器,我需要从中登录到两个不同的prod服务器并执行 top,free -h,ps -ef命令 有人可以用shell脚本帮助我

2 个答案:

答案 0 :(得分:0)

只有ssh命令才能执行此操作:

$ for ip in 192.168.138.22{1,2,3}; do ssh ${ip} -o StrictHostKeyChecking=no "free -h"; done
              total        used        free      shared  buff/cache   available
Mem:           7.8G        782M        5.2G        152M        1.8G        6.4G
Swap:          7.9G          0B        7.9G
              total        used        free      shared  buff/cache   available
Mem:           7.8G        1.3G        4.1G        169M        2.5G        5.8G
Swap:          7.9G          0B        7.9G
              total        used        free      shared  buff/cache   available
Mem:           7.8G        563M        5.9G        118M        1.4G        6.6G
Swap:          7.9G          0B        7.9G

然而,这需要彼此authenticate ssh-key。因此,我们可以使用sshpass来传递passqord

$ for ip in 192.168.138.22{1,2,3}; do sshpass -p PASSWORD ssh ${ip} -o StrictHostKeyChecking=no "free -h"; done
              total        used        free      shared  buff/cache   available
Mem:           7.8G        782M        5.2G        152M        1.8G        6.4G
Swap:          7.9G          0B        7.9G
              total        used        free      shared  buff/cache   available
Mem:           7.8G        1.3G        4.1G        169M        2.5G        5.8G
Swap:          7.9G          0B        7.9G
              total        used        free      shared  buff/cache   available
Mem:           7.8G        563M        5.9G        118M        1.4G        6.6G
Swap:          7.9G          0B        7.9G

答案 1 :(得分:0)

如果您具有对服务器的ssh访问权限,则可以通过以下方式远程执行命令:

ssh -i <PATH_YOUR_PRIVATE_KEY>remote_username@remote_host "<COMMAND>"