1.创建一个简单的ping函数
使用kamene模块(之前的名字为Scapy)
安装:
pip3 install -i https://pypi.douban.com/simple/ kamene
交互界面测试:
>>> import logging
>>> logging.getLogger("kamene.runtime").setLevel(logging.ERROR) # 关闭不必要的报错
>>> ping_pkt = IP(dst='196.21.5.254')/ICMP() # 制造一个Ping包
>>> ping_result = sr1(ping_pkt, timeout=2, verbose=False) # Ping并且把返回结果复制给ping_result
>>> ping_result.show() # 查看回显结果
from kamene.all import *
import logging
logging.getLogger("kamene.runtime").setLevel(logging.ERROR)
def ping(ip):
ping_pkt = IP(dst=ip) / ICMP()
ping_result = sr1(ping_pkt, timeout=2, verbose=False)
if ping_result:
print('主机' + ip + '可达!!!')
else:
print('主机' + ip + '不可达!!!')
host = ['192.168.80.11', '192.168.80.13', '192.168.80.100', '192.168.80.200', '192.168.80.12', '192.168.80.14']
for i in host:
ping(i)
2.安装paramiko,并创建SSH登录设备执行命令的函数
安装基本依赖:
yum install gcc libffi-devel python-devel openssl-devel
安装paramiko依赖的python模块:
pip3 install -i https://pypi.douban.com/simple/ pycparser
pip3 install -i https://pypi.douban.com/simple/ cryptography==2.4.2
安装paramiko模块:
pip3 install -i https://pypi.douban.com/simple/ paramiko
import paramiko
def ssh(ip, username, passwd, port=22, cmd='ls'):
ssh1 = paramiko.SSHClient()
ssh1.load_system_host_keys()
ssh1.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh1.connect(ip, port, username=username, password=passwd, timeout=2, compress=True)
stdin, stdout, stderr = ssh1.exec_command(cmd)
x = stdout.read().decode()
return x
if __name__ == '__main__':
print(ssh('192.168.80.101', 'root', 'redhat'))
print(ssh('192.168.80.101', 'root', 'redhat', cmd='pwd'))
使用2制作的函数,通过SSH远程登录Linux查询Linux的网关
import paramiko
import re
def ssh(ip, username, passwd, port=22, cmd='ls'):
ssh1 = paramiko.SSHClient()
ssh1.load_system_host_keys()
ssh1.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh1.connect(ip, port, username=username, password=passwd, timeout=2, compress=True)
stdin, stdout, stderr = ssh1.exec_command(cmd)
x = stdout.read().decode()
return x
if __name__ == '__main__':
gateway = ssh('192.168.80.101', 'root', 'redhat', cmd='route -n')
print(gateway)
result = re.findall('[\d+\.+]+ +([\d+\.+]+) +[\d+\.+]+ +UG',gateway)
for i in result:
print('网关为: {}'.format(i))