1. 程式人生 > >Python: Paramiko.SSH 遠端連線協議

Python: Paramiko.SSH 遠端連線協議

轉自:

1. 連結方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

方式一:

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect("IP地址",22,"使用者名稱""口令")

上面的第二行程式碼的作用是允許連線不在know_hosts檔案中的主機。

方式二:

ssh = paramiko.Transport((“主機”,”埠”))

ssh.connect(username = “使用者名稱”, password = “口令”)

如果連線遠端主機需要提供金鑰,上面第二行程式碼可改成:

ssh.connect(username = “使用者名稱”, password = “口令”, hostkey=”金鑰”)

方式三:

ssh = paramiko.SSHClient()

#ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

pkey_file='/hmoe/kkk/.ssh/id_rsa'    #設定使用者私祕鑰路徑

key=paramiko.RSAKey.from_private_key_file(pkey_file)

ssh.connect(host,port,user, pkey=key,timeout=5)

2. 例項

In [1]: import paramiko

In [2]: import sys,os

In [3]: host='127.0.0.1'   #sys.argv[1] 第一個引數為主機IP

In [4]: user='kkk'

In [5]: password='123456'

In [6]: cmd='ls -l'

In [7]: s=paramiko.SSHClient()    #繫結例項

In [8]: s.load_system_host_keys()  #載入本地host主機檔案

In [9]: s.set_missing_host_key_policy(paramiko.AutoAddPolicy())  #允許連線不在know_hosts檔案中的主機(可選項)

In [10]: s.connect(host,22,user,password,timeout=3)  #連結遠端主機

In [11]: stdin,stdout,stderr=s.exec_command(cmd)    #一次性的執行命令

In [12]: cmd_result=stdout.read(),stderr.read()     #讀取命令結果

In [13]: for i in cmd_result:          

   ....:     print i

   ....:     

total 328452

drwxrwxr-x 3 kkk  kkk       4096 Sep  3 01:54 apache

drwxr-xr-x 3 root root      4096 Sep 17 00:14 blog

drwxrwxr-x 6 kkk  kkk       4096 Sep 21 19:36 ENV

-rw-rw-r-- 1 kkk  kkk        584 Aug 22 03:28 index.html

-rw-r--r-- 1 root root       547 Sep 23 02:48 mping.py

drwxrwxr-x 2 kkk  kkk       4096 Sep 21 18:32 py3

-rw-r--r-- 1 root root       327 Sep 14 13:17 t.log

-rw-rw-r-- 1 kkk  kkk  336299008 Sep 14 09:31 ubuntu_apache2.tar

SSH 協議: