我需要一个可以远程登录系统的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命令来执行远程系统上的文件。 有没有什么方法可以在一次登录时在远程系统中运行一堆代码。
答案 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
替换为csh
或python
,然后为该解释程序编写代码
如果你想将ssh会话的输出存储在一个文件中(比如session.log),那么替换
ssh -1 ${USERNAME} ${IP} bash << 'EOF'
与
ssh -1 ${USERNAME} ${IP} bash << 'EOF' > 'session.log'
休息保持不变