ssh连接centos远程服务器运行指令的问题

ssh连接centos远程服务器运行指令的问题,第1张

总结下使用ssh远程执行命令需要注意点: 
一般我们会使用ssh ip "执行命令"这种格式来执行远程是shell命令,但是如果是简单的一些 *** 作还好,比如cd,rm,ls,mv等命令一般不会出问题 
,但是如果你的脚本任务是,杀死多台机器上的hadoop或者elasticsearch进程,你会怎么做? 

伦理片 >


直接使用: 
ssh h1 "kill -9 `jps | grep Elastic  | gawk '{print $1}'  ` " 杀死es进程,你会发现,它竟然没有生效? 明明在本地执行 
kill -9 `jps | grep Elastic  | gawk '{print $1}'  ` 
这个命令是可以生效的,为啥,放到远程执行命令中就失效了呢? 
其实原因很简单,就是因为没有转义造成的,包括awk变量名引用都需要转义,否则,你会发现,虽然能执行,但结果依旧是不准确的,注意linux中 
单引号(所有命令均被当成普通字符处理) 
双引号(可引用变量名) 
反引号(可以执行linux脚本命令)的区别 
看最终的正确的写法: 

Java代码  

ssh $host " es_pid=\`jps | grep Elasticsearch | gawk '{print \$1}'\` && kill \$es_pid    "


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10876444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存