zoukankan      html  css  js  c++  java
  • linux shell执行远程计算机上的命令或者脚本(ssh)

     

      大数据平台下经常建立设计多个节点的集群需要统一部署,这就设计到守护进程或者部署脚本在不同节点执行,如果能在master机器上,统一执行脚本,一次性启动整个集群的服务,感觉很nice。因为,分享如下内容:

    前提条件:

      配置ssh免密码登陆

    对于简单的命令:

      如果是在远端节点执行几个命令,则:

    ssh user@remoteNode "cd /home ; ls"

      注意点:

    1. 双引号,必须有。如果不加双引号,第二个ls命令在本地执行
    2. 分号,两个命令之间用分号隔开

    对于远端执行脚本的方式:

      有些远程执行的命令内容较多,单一命令无法完成,考虑脚本方式实现:

    #!/bin/bash
    ssh user@remoteNode > /dev/null 2>&1 << eeoo
    cd /home
    touch abcdefg.txt
    exit
    eeoo
    echo done!

     

      远程执行的内容在“<< eeoo ” 至“ eeoo”之间,在远程机器上的操作就位于其中,注意的点:

    1. << eeoo,ssh后直到遇到eeoo这样的内容结束,eeoo可以随便修改成其他形式。
    2. 重定向目的在于不显示远程的输出了
    3. 在结束前,加exit退出远程节点

     本人示例代码:

    #!/bin/bash
    source /home/config.sh
    /home/start-XXX.py 
    echo node local ok
    #kill process no needed ps x
    | grep 'XXX' | grep -v grep | awk '{print $1}'| xargs -l kill -9 ssh root@XXX141 > /dev/null 2>&1 << eeooff source /home/config.sh /home/start-xxx.py exit eeooff echo xxx141 done!
    ssh root@XXX142 > /dev/null 2>&1 << eeooff
    source /home/config.sh
    /home/start-xxx.py
    exit
    eeooff
    echo xxx142 done!
    
    

     

  • 相关阅读:
    linux网络编程 inet_aton(); inet_aton; inet_addr;
    linux网络编程 ntohs, ntohl, htons,htonl inet_aton等详解
    linux C++ scandir 的使用
    linux 多线程编程-读写者问题
    为什么修改头文件make不重新编译
    syslog(),closelog()与openlog()--日志操作函数
    VC:CString用法整理(转载)
    VC6.0实用小技巧
    HTml js 生成图片
    C++中两个类相互包含引用问题
  • 原文地址:https://www.cnblogs.com/chengyeliang/p/4123191.html
Copyright © 2011-2022 走看看