Linux Shell脚本以在远程执行命令,然后退出Shell以在本地执行下一个操作

Linux Shell脚本以在远程执行命令,然后退出Shell以在本地执行下一个操作,linux,bash,shell,Linux,Bash,Shell,我正在编写一个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

我正在编写一个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
set-x
ssh$1
cd/var/log/sysstat/
对于((i=11;i>/home/sirish.aditya/cpu_11-19.csv
sar-f$i-r>>/home/sirish.aditya/mem_11-19.csv
完成
出口
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”
有人能帮忙吗


提前感谢

您可以将远程执行的一部分提取到外部脚本,然后通过条件管道将其发送到
退出
函数

例如:

exec\u in\u 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
!/bin/bash
cd/var/log/sysstat/
对于((i=11;i>/home/sirish.aditya/cpu_11-19.csv
sar-f$i-r>>/home/sirish.aditya/mem_11-19.csv
完成
然后在主脚本中:

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
set-x
ssh$1'bash-s'
并按照上面提到的方式运行它:

ssh sirish。aditya@remote_machine“bash-s”

试试这个

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
set-x
ssh$1>/home/sirish.aditya/mem_11-19.csv
完成
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

使用发送您试图远程运行的命令。

这两种解决方案都出现身份验证错误。让我再试一次,然后返回。感谢您的快速响应!@avihoo mamka+julian
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