salt cmdrun 特殊字符的转义

当用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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 10,268评论 0 11
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,255评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 4,795评论 0 0
  • 基础 头文件 #!/bin/bash 或者#!/bin/sh #!约定的标记,如IOS的Import 执行文件时需...
    ZMJun阅读 5,011评论 1 2

友情链接更多精彩内容