免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2543 | 回复: 1
打印 上一主题 下一主题

[系统管理] 在命令行 使用单引号防止转义,但是参数里面还有单引号的问题 [复制链接]

论坛徽章:
11
2015年迎新春徽章
日期:2015-03-04 09:55:282017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之辽宁
日期:2016-12-15 10:24:1715-16赛季CBA联赛之佛山
日期:2016-11-30 09:04:2015-16赛季CBA联赛之江苏
日期:2016-04-29 15:56:1215-16赛季CBA联赛之同曦
日期:2016-04-12 13:21:182016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之山东
日期:2016-02-16 11:37:52每日论坛发贴之星
日期:2016-02-07 06:20:00程序设计版块每日发帖之星
日期:2016-02-07 06:20:0015-16赛季CBA联赛之新疆
日期:2018-01-09 16:25:37
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-02-29 09:48 |只看该作者 |倒序浏览
主要场景,先ssh到远程主机,再切换到另外一个用户下面执行,管理的事务比较多用户是规则分发, 直接ssh到对应的用户不适合批量操作
想简便一点

ssh remotehost 'su - remote_user -c "cmd param param"'

因为其中param不能转义, 但是上面格式远程主机实际执行的是 cmd param param 会被转义而导致语法错误
对于双引号,需要穷举里面转义的$ { \ < >之类字符,写出来的命令页不直观,上面的命令其实是3层转义

第一层;执行一个sql语句(有单引号,$,(,等任何字符)
第二层;使用sqlplus一次性执行上面的sql语句
第三层;使用root用户切换到oracle用户执行sqlplus命令
第四层(怎么又多了一层..还会再多):在另外主机上面使用ssh连接到这个主机执行
...
第N层:在另外另外的主机上面ssh...

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
2 [报告]
发表于 2016-03-01 15:45 |只看该作者
echo "cmd param param" | ssh remotehost 'su - remote_user -c bash'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP