python ssh2远程登录节点并执行命令

root@node7:/opt# vim pyssh2.py

#!/usr/bin/python
"""
SSH connect to remote machines and then execute what
you need command
"""
import paramiko # import paramiko && help(paramiko) || pydoc paramiko
import threading

#debug = True

#class SSHClass(objiect):
#    "class"

def pyssh2(ip, username, passwd, cmd):
    try:
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(ip, 22, username, passwd, timeout=5)
        for m in cmd:
            stdin, stdout, stderr = ssh.exec_command(m)
#            stdin.write("Y")   #simple interaction, default input 'Y'
            out = stdout.readlines()
            #output to screen    
            for o in out:
                print o,
            print '%s\tOK\n' % (ip),
            ssh.close()
    except Exception, e:
        print 'ERR: can not find remote host %s' % (ip), e

if __name__=='__main__':
    cmd = ['hostname']#need to execute cmd
    username = "root"#username
    passwd = "123123"    #password
    threads = []   #multi thread
    print "Prompt:begin to connect remote machines......"
    for i in range(150,156):
          ip = '10.100.1.'+str(i)
          a=threading.Thread(target=pyssh2,args=(ip,username,passwd,cmd)) #used default arguments
#          __init__(self, group=None, target=None, name=None, args=(), kwargs=None, verbose=None)
#          a=threading.Thread()
#          a.__init__(group=None, target=pyssh, name=None, args=(ip,username,passwd,cmd),
#                 kwargs=None, verbose=None)
          a.start()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是根据你的要求编写的Python源码,可以实现开机自动启动MobaXterm应用程序,并在其中自动启动ROS节点: ```python import os import time def start_mobaxterm(): mobaxterm_path = "C:\\Path\\to\\MobaXterm1_CHS1.exe" os.startfile(mobaxterm_path) time.sleep(5) # 等待MobaXterm启动 def establish_ssh_session(ip, username, password): # 替换为SSH连接远程主机的命令 ssh_command = f'ssh {username}@{ip}' os.system(ssh_command) time.sleep(5) # 等待SSH会话建立 os.system(username) # 输入用户名 time.sleep(2) os.system(password) # 输入密码 def start_roscore(): # 替换为在MobaXterm中启动roscore的命令 roscore_command = "cd /root/catkin_ws/ && roscore" os.system(roscore_command) def start_ros_node(): # 替换为在MobaXterm中启动ROS节点的命令 ros_node_command = "cd /root/catkin_ws/ && rosrun your_package your_ros_node" os.system(ros_node_command) def start_psdk(): # 在第一个启动的会话中新建新的会话,输入cd /root/tta_ros,回车,在输入./dji_sdk_demo_linux_cxx psdk_command = "cd /root/tta_ros && ./dji_sdk_demo_linux_cxx" os.system(psdk_command) if __name__ == "__main__": start_mobaxterm() establish_ssh_session("remote_ip", "root", "123456") start_roscore() start_ros_node() start_psdk() ``` 请确保将 `C:\\Path\\to\\MobaXterm1_CHS1.exe` 替换为实际的 MobaXterm 应用程序路径;将 `remote_ip` 替换为远程主机的 IP 地址;将 `your_package` 和 `your_ros_node` 替换为实际的 ROS 包名和节点名。 此代码将打开 MobaXterm 应用程序,建立 SSH 会话,并在这个会话中依次输入用户名和密码。然后,它将在新的会话中启动 `roscore` 和你指定的 ROS 节点。最后,它还会在第一个启动的会话中创建一个新的会话,并启动 PSDK。 确保在运行脚本之前,已正确安装和配置了 MobaXterm 和 ROS。请注意,此代码仅适用于 Windows 系统。如果你使用的是其他操作系统,请根据需要进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值