python遠程執行命令


python遠程ssh

1. python遠程執行命令

#!/usr/bin/python
# -*- coding: utf-8 -*-
import paramiko
# from cryptography.hazmat.backends import default_backend
import time


def excuseRemoteCmd(ipaddr, port, username, pwd, cmd):
    print(ipaddr, port, username, pwd, cmd)
    try:
        # 創建SSH對象
        ssh = paramiko.SSHClient()

        # 允許連接不在know_hosts文件中的主機
        ssh.load_system_host_keys()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

        # 連接服務器
        ssh.connect(ipaddr, port=port, username=username,
                    password=pwd, timeout=10)

        # 打開一個Channel並執行命令
        # stdout 為正確輸出,stderr為錯誤輸出,同時是有1個變量有值
        stdin, stdout, stderr = ssh.exec_command(cmd, get_pty=True, timeout=60)
        # 打印執行結果
        # for item in stdout.readlines():
        #     print item
        while not stdout.channel.exit_status_ready():
            result = stdout.readline()
            print(result)
            if stdout.channel.exit_status_ready():
                result = stdout.readlines()
                print(result)
                break
        # 錯誤打印
        err_list = stderr.readlines()
        if len(err_list) > 0:
            print 'ERROR:' + err_list
            # exit()

        # 關閉連接
        ssh.close()
        return stdout, stderr
    except Exception as e:
        print(e)
    return stdout, stderr

2. shell遠程執行命令

# 遠程執行腳本
CardCmd = "ssh -T -o ServerAliveInterval=5 -p %s %s@%s  \"sh /opt/xxx/sed_network_card.sh %s\"" % (
        remotePort, username, remoteIp, remoteIp)
    print("getNetCardCmd:%s" % (CardCmd))
    status, output = commands.getstatusoutput(CardCmd)
    if status != 0:
        print("cmd result:%s,status:%s" % (output, status))
        return status, output
 ----------------------------------------------------------------------------
 # 遠程拷貝
 Cmd = "scp " + " -P " + remotePort + " " + SrcPath + \
        " "+username+"@"+remoteIp+":" + DstPath
    print("Cmd:", Cmd)
    status, output = commands.getstatusoutput(Cmd)
    if status != 0:
        print("cmd result:%s,status:%s" % (output, status))
        return status, output


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM