zoukankan      html  css  js  c++  java
  • ssh远程执行命令的符号转义问题

    远程执行命令

    • 前提条件

    配置ssh免密码登陆。

    • 命令
    ssh user@remote_host "cmd..."
    
    • 脚本
    ssh user@remote_host <<EOF
    cmd1
    cmd2
    ...
    EOF
    

    特殊字符的转义

    远程执行脚本的情况下,脚本中的内容可视为是双引号包含起来的。

    远程执行命令的情况下,例如:ssh user@remote_host "${COMMOND}":

    • 使用单引号的时候,$COMMAND定义的命令字符都会在本地被去掉特殊意义,只是一串完全没有解析引用的字符串传过去远程主机;
    • 如果是使用双引号时,$COMMAND定义的特殊命令字符都会在本地被解析引用,比如上面COMMAND中的反引号、EXTRACT_DIR变量、i变量,所以此时要在COMMAND中的特殊字符前加上转义符号“”,这样就会去掉在本地的解析引用;但是如果COMMAND变量中也有一个BAK_TIME变量引用前是不用加转义符的,因为这个变量就是希望在本地引用的。

    总结: ssh远程执行的命令中使用单引号时,所有变量、特殊字符都不会在本地解析引用,会原封不动地传过去远程主机;如果在命令中有变量或特殊字符在本地进行解析引用的,命令就得使用双引号括起来,此时命令中不需要在本地解析引用的变量或特殊字符就需要在其前面加上转义符“”。

  • 相关阅读:
    3574. 乘积数量
    1357. 优质牛肋骨
    1356. 回文质数
    3554. 二进制
    13 vue路由跳转传参
    12 el-form的inline属性
    10 js数组赋值问题
    9 彻底搞懂json字符串和json对象
    8 element自定义卡槽的好处
    7 el-table表格中使用Dropdown 下拉菜单无法显示下拉框的问题
  • 原文地址:https://www.cnblogs.com/jmliao/p/12203503.html
Copyright © 2011-2022 走看看