美文网首页
salt cmdrun 特殊字符的转义

salt cmdrun 特殊字符的转义

作者: leyu | 来源:发表于2017-01-14 12:33 被阅读0次

    当用salt来远程执行命令的时候,需要将命令里的特殊字符进行转义处理,不然会导致命令无法正常执行。特别是需要输入密码的时候,可以用echo命令进行测试,方便查看是否正常处理。

    1. 需要输入!@#$1-1这种字符,如果不加转义,会直接报错。因为命令被!截断了。
      [root@salt-master-105 ~/electricity_control]# salt 'a.mysql.001' cmd.run "echo !@#$1-1"
    -bash: !@#$1-1": event not found
    
    1. 尝试在!前加转义符\,可以正常执行,但是转义符也echo出来了,加两个\,也没有解决。最后发现在不加转义符,外层用单引号,内部用双引号,实现了。看来salt远程执行命令的时候,外层引号最好用单引号。
    [root@salt-master-105 ~]# salt 'a.mysql.001' cmd.run "echo '\!@#$1-1'"
    a.mysql.001:
        \!@#-1
    [root@salt-master-105 ~]# salt 'a.mysql.001' cmd.run "echo '\\!@#\$1-1'"
    a.mysql.001:
        \!@#$1-1
     [root@salt-master-105 ~]# salt 'a.mysql.001' cmd.run 'echo "!@#\$1-1"'
    a.mysql.001:
        !@#$1-1
    

    3.$1符号并没有正常输出,肯定是把$1当成是参数变量了,$符号前再加转义就没了。

    [root@salt-master-105 ~]# salt 'a.mysql.001' cmd.run "echo '\!@#\$1-1'"
    a.mysql.001:
        \!@#$1-1
    

    相关文章

      网友评论

          本文标题:salt cmdrun 特殊字符的转义

          本文链接:https://www.haomeiwen.com/subject/iuqsbttx.html