linux下用paramiko登入防火牆裝置

2021-09-23 14:15:21 字數 1839 閱讀 2766

由於crt和xshell自帶的python不識別一些庫,crt只支援python2,目前沒有計畫支援python3。

因此利用linux中安裝的python來實現一些指令碼。

缺點:不如crt能夠立馬回顯看到指令碼執行的情況,要自己在裝置上show才能知道執行結果。

import paramiko

import time

#建立ssh物件

ssh = paramiko.

sshclient()

#把要連線的機器新增到known_hosts檔案中

ssh.

set_missing_host_key_policy

(paramiko.

autoaddpolicy()

)#連線伺服器

ssh.

connect

(remote_ip=

'10.18.18.52'

, port=

22, username=

'test'

, password=

'123'

)delay =

1#在ssh

server端建立乙個互動式的shell,且可以按自己的需求配置偽終端,可以在invoke_shell

()函式中新增引數配置。

remote_conn = ssh.

invoke_shell()

#buffer_size輸入指令以及列印顯示的大小

buffer_size =

2000

#顯示結果

result =

""#ssh登入裝置預設是全域性模式,

這個和防火牆型別有關,send

()就是我們需要傳送命令

remote_conn.

send

('\n'

)time.

sleep

(delay)

remote_conn.

send

('config\n'

)result+=

str(remote_conn.

recv

(buffer_size)

)print

(result)

#輸出的結果就是所有傳送的指令和裝置上的回顯,顯示多少和buffer_size大小有關

#logout

ssh.

close

()

paramiko登入後傳送命令的函式有很多,比如說常用的

stdin,stdout,stderr = ssh.exec_command(cmd,bufsize,timeout)

這條指令不適合用在防火牆,適合用在遠端操作linux系統,因為exec_command引數使用只需要執行一次的命令,因為執行完該命令以後,shell會自動回到ssh初始連線的shell狀態下。

在防火牆上使用這條命令會報max try count must be an positive integer

這裡使用的是

chan = ssh.invoke_shell()#在ssh server端建立乙個互動式的shell,且可以按自己的需求配置偽終端,可以在invoke_shell()函式中新增引數配置。

chan.send(cmd+』\n』)#利用send函式傳送cmd到ssh server,新增』\n』做回車來執行shell命令。注意不同的情況,如果執行完telnet命令後,telnet的換行符是\r\n

chan.recv(bufsize)#通過recv函式獲取回顯。

python下paramiko模組ssh登入

python下有個paramiko模組,這個模組可以實現ssh登入linux伺服器,下面貼出 注意,我在centos5.6下,python2.6.5,paramiko 1.7的版本下測試成功。usr bin env python import paramiko hostname 172.28.102...

paramiko上傳檔案到Linux

importparamiko transport paramiko.transport host 22 transport.connect username root password 123 sftp paramiko.sftpclient.from transport transport sft...

Linux下用speedtest cli測網速

在linux 的命令列中使用speedtest cli來測試寬頻連線速度。wget chmod a rx speedtest cli.py sudo mv speedtest cli.py usr local bin speedtest cli sudo chown root root usr lo...