shell脚本ssh远程执行命令给变量赋值的问题解决

 更新时间:2023年07月05日 10:17:14   作者:iRayCheung  
本文主要介绍了shell脚本ssh远程执行命令给变量赋值的问题解决,就是从A机器通过SSH方式到B机器,并执行相关的命令,具有一定的参考价值,感兴趣的可以了解一下

需求及目标

从A机器通过SSH方式到B机器,并执行相关的命令。命令中包含变量及变量的赋值。

代码如下,意思是,ssh到192.111.111.27这台机器,cd到 / 根目录下,并执行ls命令,如果ls出来的结果不为空,则执行echo命令。可以肯定的是 / 根目录下是有内容的。

ssh -i /root/.ssh/private_key -tt -o StrictHostKeyChecking=no  rbadmin_app1@192.111.111.27 << eof
cd /
LSRESULT="$(ls)"
echo $LSRESULT
exit
eof

可以看到当执行到 echo 命令的时候,输出的是空,这就很奇怪。

问题产生的原因

这是因为我们将远程执行的命令和变量赋值语句放在了 SSH 的输入重定向中 (<< eof … eof)。在这种情况下,脚本中的变量赋值语句将在本地 Shell 中执行,而不是远程机器上。也就是说变量赋值语句其实不会在你远程执行的这台B机器上去执行,而是等到ssh命令完成后,回到机器A上后去执行,实际 ls 命令执行的路径是机器A在执行ssh命令时所在的路径。

问题的解决

ssh -i /root/.ssh/private_key -tt -o StrictHostKeyChecking=no  rbadmin_app1@192.111.111.27 << eof
cd /
LSRESULT="\$(ls)"
echo \$LSRESULT
exit
eof

可以看到此时,执行echo命令时,就输出了远程机器上执行的ls命令。修改的地方很简单,在执行的语句外层的$符号前加上反斜杠 \ , 在引用的变量上加上反斜杠 \ 即可。这是由于命令和变量在远程机器上执行,因此需要使用 \ 进行适当的转义,以确保变量能够正确地被解析和赋值。

 到此这篇关于shell脚本ssh远程执行命令给变量赋值的问题解决的文章就介绍到这了,更多相关shell ssh远程变量赋值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Bash脚本实现实时监测登录

    Bash脚本实现实时监测登录

    在服务器的运维管理中,及时监控系统的登录日志对保障系统的安全至关重要,下面我们来看看如何使用Bash脚本实现实时监测登录日志吧
    2024-11-11
  • 自动重启服务的shell脚本代码

    自动重启服务的shell脚本代码

    公司tomcat服务器有个过一段时间自动会挂的bug一直没能解决,挂的时候还要手动重启tomcat,于是决定写个脚本让它定时检测故障自动重启吧
    2013-06-06
  • Python创建、删除桌面、启动组快捷方式的例子分享

    Python创建、删除桌面、启动组快捷方式的例子分享

    这篇文章主要介绍了Python创建、删除桌面、启动组快捷方式的例子分享,需要的朋友可以参考下
    2014-04-04
  • Linux Shell脚本查看NUMA信息

    Linux Shell脚本查看NUMA信息

    这篇文章主要介绍了Linux Shell脚本查看NUMA信息,本文直接给出脚本实现代码,需要的朋友可以参考下
    2015-06-06
  • 一篇教会你写90%的shell脚本(入门小结)

    一篇教会你写90%的shell脚本(入门小结)

    这篇文章主要介绍了一篇教会你写90%的shell脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • linux删除无效链接文件脚本分享

    linux删除无效链接文件脚本分享

    一个 shell 脚本文件,用于删除指定目录下无效链接文件,可利用标准输入指派多个处理目标
    2014-03-03
  • 使用shell来发tcp包的方法

    使用shell来发tcp包的方法

    今天小编就为大家分享一篇关于使用shell来发tcp包的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • 使用shell脚本判断文件后缀的方法实例

    使用shell脚本判断文件后缀的方法实例

    这篇文章主要给大家介绍了关于如何使用shell脚本判断文件后缀的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • Shell脚本实现线上服务器之间对比文件是否一致

    Shell脚本实现线上服务器之间对比文件是否一致

    这篇文章主要介绍了Shell脚本实现线上服务器之间对比文件是否一致,本文脚本在特殊环境下使用,需要的朋友可以参考下
    2014-12-12
  • nginx日志切割shell脚本

    nginx日志切割shell脚本

    nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件
    2014-03-03

最新评论