用于远程连接到其他系统的shell脚本,并在其中执行一堆命令

时间:2016-02-06 18:22:10

标签: linux bash shell ssh

我需要一个可以远程登录系统的shell脚本,我可以在该系统中执行一堆命令。

我制作了一个剧本,实际上它正在运作:

#!/bin/bash
USERNAME=KRUNAL
IP=10.61.162.241
ssh -l ${USERNAME} ${IP} "pwd "
ssh -l ${USERNAME} ${IP} "ls -la"
ssh -l ${USERNAME} ${IP} ./a.out

我有问题,如果我假设我制作了剧本

ssh -l ${USERNAME} ${IP} "pwd " # this execute in remote system
ls -la # this execute in current system.

所以每次我需要ssh命令来执行远程系统上的文件。 有没有什么方法可以在一次登录时在远程系统中运行一堆代码。

2 个答案:

答案 0 :(得分:1)

您可以根据需要向ssh发送尽可能多的命令,只要您将其与;或换行符分开即可。所以这应该有效:

ssh -l ${USERNAME} ${IP} "pwd; ls -la"

答案 1 :(得分:0)

@ Joao的建议很好但是在写很多行时不切实际。

如果是这种情况,你可以

ssh -1  ${USERNAME} ${IP} bash << 'EOF'
   cd /some/directory
   ./a.out
   who am i
   for i in `seq 1 10`
   do
      echo $i
   done
EOF 

'EOF'和最终EOF之间的任何内容都将在服务器端执行。 您也可以将bash替换为cshpython,然后为该解释程序编写代码

如果你想将ssh会话的输出存储在一个文件中(比如session.log),那么替换

ssh -1  ${USERNAME} ${IP} bash << 'EOF'

ssh -1  ${USERNAME} ${IP} bash << 'EOF' > 'session.log'

休息保持不变