通过面向对象编程思想使用paramiko中的invoke_shell,不间断批量ping数量未知的IP
时间: 2023-11-28 15:50:20 浏览: 87
首先,需要安装 Paramiko 库,可以使用如下命令进行安装:
```python
pip install paramiko
```
接着,可以使用以下代码实现对一组 IP 进行 Ping 操作:
```python
import paramiko
import re
class PingIPs:
def __init__(self, ip_list, username, password):
self.ip_list = ip_list # IP 列表
self.username = username # 登录用户名
self.password = password # 登录密码
def ping(self):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='localhost', port=22, username=self.username, password=self.password)
# 执行 ping 命令
for ip in self.ip_list:
stdin, stdout, stderr = ssh.exec_command('ping -c 1 ' + ip)
result = stdout.read().decode('utf-8')
# 解析结果
packet_loss = re.findall("(\d+)% packet loss", result)[0]
if packet_loss == '100':
print(ip + ' is not reachable')
else:
print(ip + ' is reachable')
ssh.close()
if __name__ == '__main__':
ip_list = ['192.168.1.1', '192.168.1.2', '192.168.1.3']
ping_ips = PingIPs(ip_list, 'username', 'password')
ping_ips.ping()
```
这里使用了 Paramiko 库中的 SSHClient 类来连接远程服务器,并执行 ping 命令。需要注意的是,这里只是简单地使用 ping 命令来测试 IP 是否可达,实际使用中还需要考虑网络延迟等因素。
另外,如果需要批量 ping 大量的 IP,可以将 IP 分组后并行执行 ping 命令,以提高效率。
阅读全文