linux下用paramiko登录防火墙设备

linux下用paramiko ssh登录防火墙设备


由于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函数获取回显。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值