我正在编写一个shell脚本来执行远程的一系列操作。然后我想回到本地并执行下一系列动作。当我使用exit时,我将退出shell脚本而不是退出远程计算机。
set -x
ssh $1
cd /var/log/sysstat/
for (( i = 11; i <= 19; i++ ))
do
sar -f $i >> /home/sirish.aditya/cpu_11-19.csv
sar -f $i -r >> /home/sirish.aditya/mem_11-19.csv
done
exit
mkdir /Users/sirish.aditya/workSpace/cpustats_srm/$1
scp sirish.aditya@$1:/home/sirish.aditya/mem_11-19.csv /Users/sirish.aditya/workSpace/cpustats_srm/$1
scp sirish.aditya@$1:/home/sirish.aditya/cpu_11-19.csv /Users/sirish.aditya/workSpace/cpustats_srm/$1
-
ssh sirish.aditya@remote_machine 'bash -s' < memory.sh remote_machine
有人可以为此提供帮助吗?
提前致谢
答案 0 :(得分:0)
您可以将远程执行的一部分提取到外部脚本,然后将其条件化地传递给exit
函数。
例如:
exec_in_remote.sh
:
#!/bin/bash
cd /var/log/sysstat/
for (( i = 11; i <= 19; i++ ))
do
sar -f $i >> /home/sirish.aditya/cpu_11-19.csv
sar -f $i -r >> /home/sirish.aditya/mem_11-19.csv
done
然后在你的主脚本中:
set -x
ssh $1 'bash -s' < exec_in_remote.sh
mkdir /Users/sirish.aditya/workSpace/cpustats_srm/$1
scp sirish.aditya@$1:/home/sirish.aditya/mem_11-19.csv /Users/sirish.aditya/workSpace/cpustats_srm/$1
scp sirish.aditya@$1:/home/sirish.aditya/cpu_11-19.csv /Users/sirish.aditya/workSpace/cpustats_srm/$1
如上所述运行它:
ssh sirish.aditya@remote_machine 'bash -s' < memory.sh remote_machine
答案 1 :(得分:0)
试试这个,
set -x
ssh $1 <<'EOT'
cd /var/log/sysstat/
for (( i = 11; i <= 19; i++ ))
do
sar -f $i >> /home/sirish.aditya/cpu_11-19.csv
sar -f $i -r >> /home/sirish.aditya/mem_11-19.csv
done
EOT
mkdir /Users/sirish.aditya/workSpace/cpustats_srm/$1
scp sirish.aditya@$1:/home/sirish.aditya/mem_11-19.csv /Users/sirish.aditya/workSpace/cpustats_srm/$1
scp sirish.aditya@$1:/home/sirish.aditya/cpu_11-19.csv /Users/sirish
使用here doc发送您尝试远程运行的命令。