python 自定义ping ssh函数

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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值