Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiele für Fernsteuerung und -übertragung mit dem Paramiko-Modul in Python

Beispiele für Fernsteuerung und -übertragung mit dem Paramiko-Modul in Python

黄舟
黄舟Original
2017-10-13 11:00:112771Durchsuche

In diesem Artikel wird hauptsächlich das Paramiko-Modul von Python zur Implementierung von Fernsteuerungs- und Übertragungsbeispielen vorgestellt. Es ist von großem praktischem Wert. Freunde in Not können sich darauf beziehen.

In diesem Artikel wird das Paramiko-Modul von Python zur Implementierung von Fernsteuerungs- und Übertragungsbeispielen vorgestellt Beispiele. Teilen Sie es mit allen. Die Details lauten wie folgt:

1 Installation


sudo pip install paramiko

2 SSH, um Remote zu erreichen Kontrolle


#LINUX下执行shell
ssh username@ip #输入密码后就可以对远程机器进行操作
ssh username@ip command #输入密码后远程机器就执行command

Nachdem SSH ausgeführt wurde, können Sie den SSH-Prozess beenden, wenn Sie ihn beenden möchten.

3 paramiko implementiert ssh


import paramiko
hostname = '10.1.111.111'
username = 'root'
password = '111111'
port = 22 #整数不是字符串
paramiko.util.log_to_file('paramiko.log')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在know_hosts文件中的主机
ssh.connect(hostname=hostname,port=port,username=username,password=password)
stdin, stdout, stderr = ssh.exec_command("ls") #远程执行shell命令
print(stdout.readlines()) #输出回显结果
ssh.close()

exec_command-Befehl, getrennt durch Semikolon; bedeutet, dass mehrere Befehle nacheinander ausgeführt werden können in Parametern übergeben; exec_command ist eine einzelne Sitzung, die beim Anmelden wie folgt in das Standardverzeichnis zurückkehrt:


a='~/Videos'
b='aaa'
ssh.exec_command('cd %s;mkdir %s'%(a,b)) #aaa在a目录下
ssh.exec_command('mkdir aaa') #aaa在缺省目录下

Wenn beim Ausführen des Befehls aus der Ferne eine Interaktion auftritt, können Sie diese mit stdin.write("") abschließen.

Hinweis:

(1) Fügen Sie -S nach sudo hinzu, um das Passwort von stdin zu erhalten.

(2) Fügen Sie am Ende stdin.write('passwordn') hinzu n als Ende des Befehls, andernfalls wartet der Server weiter 🎜>

Sie können mehrere Prozesse oder Threads verwenden, um Befehle stapelweise auszuführen:



stdin, stdout, stderr = ssh.exec_command('sudo -S ls')
stdin.write('password\n')
stdin.flush()
4 Remote-Dateiübertragung


scp kopiert vom lokalen Server auf den Remote-Server


import paramiko
import threading

def ssh_cmd(ip,port,username,passwd,cmd):
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh.connect(ip,port,username,passwd)
  for m in cmd:
    stdin, stdout, stderr = ssh.exec_command(m)
    print(stdout.readlines()) 
  ssh.close()

if __name__=='__main__':
  cmd = ['ls','ifconfig']   
  a=threading.Thread(target=ssh_cmd,args=(ip,port,username,passwd,cmd))
  a.start() 
  a.join()

Der Benutzername wird angegeben und das Benutzerkennwort muss eingegeben werden, nachdem der Befehl ausgeführt wurde; Wenn der Benutzername nicht angegeben ist, müssen Sie nach der Ausführung des Befehls den Benutzernamen und das Passwort eingeben. Kopieren Sie Dateien von einem Remote-Standort auf den lokalen



scp local_file remote_username@remote_ip:remote_file
5 Paramiko implementiert die Remote-Dateiübertragung


Neu Ein SFTPClient-Objekt, das die vorherige SSH-Verbindung wiederverwendet. Wenn wir daher SFTP zum Übertragen von Dateien verwenden, müssen wir den Benutzer nicht erneut authentifizieren. Datei-

-Upload implementieren:

scp remote_username@remote_ip:remote_file local_file

oder Datei-Upload und -Download wie folgt implementieren:



sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())
#sftp = ssh.open_sftp() #两者选其一即可
sftp.put('bbb.c','aaa.c') #文件上传并重命名
sftp.close()
Offizielle Dokumente

Das obige ist der detaillierte Inhalt vonBeispiele für Fernsteuerung und -übertragung mit dem Paramiko-Modul in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn