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远程变量赋值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • shell脚本之sed详细用法详解

    shell脚本之sed详细用法详解

    Sed是一个非交互性文本流编辑器,它编辑文件或标准输入导出的文本拷贝,vi中的正则表达式命令在sed中大多可以通用,下面这篇文章主要给大家介绍了关于shell脚本之sed详细用法的相关资料,需要的朋友可以参考下
    2022-07-07
  • Shell实现判断进程是否存在并重新启动脚本分享

    Shell实现判断进程是否存在并重新启动脚本分享

    这篇文章主要介绍了Shell实现判断进程是否存在并重新启动脚本分享,本文给出了两个实现脚本,分简洁版和详细版,需要的朋友可以参考下
    2014-09-09
  • awk中查看包含某两列字符的用法

    awk中查看包含某两列字符的用法

    awk如何查看包含某两列字符,命令及结果显示如下
    2013-02-02
  • Linux查看磁盘信息的命令详解

    Linux查看磁盘信息的命令详解

    这篇文章主要介绍了Linux查看磁盘信息的命令,df与du命令,df 命令主要用于需要检查文件系统上已使用和可用的磁盘空间的数量,du命令主要用于需要了解系统上的目录或文件所使用的磁盘空间量,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-04-04
  • Linux消息队列实现进程间通信实例详解

    Linux消息队列实现进程间通信实例详解

    这篇文章主要介绍了Linux消息队列实现进程间通信实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • Linux命令定位与查找之which、whereis和find的用法示例详解

    Linux命令定位与查找之which、whereis和find的用法示例详解

    Linux命令的定位与查找是我们日常工作中必备的技能,掌握which、whereis和find这三个命令,可以帮助我们更加高效地进行文件搜索和定位工作,这篇文章主要介绍了Linux命令定位与查找:which、whereis和find的用法详解,需要的朋友可以参考下
    2023-10-10
  • Ansible Ad-hoc命令执行模块实战教程

    Ansible Ad-hoc命令执行模块实战教程

    Ad-hoc是Ansible下临时执行的一条命令,对于复杂的命令会使用playbook。Ad-hoc的执行依赖于模块,ansible官方提供了大量的模块,这篇文章主要介绍了Ansible Ad-hoc命令执行模块 ,需要的朋友可以参考下
    2024-02-02
  • Shell中实现飞行文字效果

    Shell中实现飞行文字效果

    这篇文章主要介绍了Shell中实现飞行文字效果,比较炫的一个特效,在网页中比较常见,需要的朋友可以参考下
    2014-06-06
  • linux shell中实现循环日期的实例代码

    linux shell中实现循环日期的实例代码

    这篇文章主要介绍了linux shell中实现循环日期的实例代码,文中还给大家提到了LINUX SHELL遍历日期(指定输入两个日期)的实现方法,感兴趣的朋友跟随小编一起看看吧
    2018-09-09
  • win下调用putty执行命令脚本分享

    win下调用putty执行命令脚本分享

    这篇文章主要介绍了win下调用putty执行命令脚本,可以利用这个实现一些自动化的工作,需要的朋友可以参考下
    2014-03-03

最新评论