服务器管理员没有把服务器的ip地址固定好,经常变,服务器不在身边,在机房,每次都跑过去查看不是很方便,于是设计了一个程序进行局域网内主机的所有ip进行扫描,然后选出服务器的ip地址,进行登录。没进行代码开发的原因是比较不多见的,实现的功能是偶尔需要的。
代码如下:
# 功能:获取服务器IP地址
# 时间:2023年6月18日
# 作者:whq
from pythonping import ping
from colorama import Fore, Back, Style
def check_online(ip: str):
# 如果扫描失败可以考虑增大timeout的值
message = ping(ip, timeout=0.005)
# print(message)
success_ping = "Reply"
if success_ping in str(message):
print( + + f"localhost to - {ip} Success.")
return True
else:
print( + + f"localhost to - {ip} Fail.")
return False
if __name__ == '__main__':
# check_online("111.112.113.114")
available_ip_addrs = []
ip_prefix = '10.20.74.'
for ip_idx in range(20, 255, 1):
ip_addr = ip_prefix + str(ip_idx)
print('ip_idx:', ip_idx, ip_addr)
result = check_online(ip_addr)
if True == result:
available_ip_addrs.append(ip_addr)
print(Style.RESET_ALL)
print('*'*30, 'available_ip_addrs', '*'*30)
print(available_ip_addrs)
python ssh 登录代码:
# 功能:获取服务器IP地址
# 时间:2023年6月18日
# 作者:user
from pythonping import ping
from colorama import Fore, Back, Style
import paramiko
def check_online(ip: str):
# 如果扫描失败可以考虑增大timeout的值
message = ping(ip, timeout=0.005)
# print(message)
success_ping = "Reply"
if success_ping in str(message):
print( + + f"localhost to - {ip} Success.")
return True
else:
print( + + f"localhost to - {ip} Fail.")
return False
if __name__ == '__main__':
# check_online("111.112.113.114")
available_ip_addrs = []
ip_prefix = '10.20.74.'
for ip_idx in range(20, 255, 1):
ip_addr = ip_prefix + str(ip_idx)
print('ip_idx:', ip_idx, ip_addr)
result = check_online(ip_addr)
if True == result:
available_ip_addrs.append(ip_addr)
print(Style.RESET_ALL)
print('*'*30, 'available_ip_addrs', '*'*30)
print(available_ip_addrs)
server_ip_addr = None
# ssh 登录测试
for idx in range(len(available_ip_addrs)):
print('ssh连接:', available_ip_addrs[idx])
try:
ssh = ()
ssh.set_missing_host_key_policy(())
aa = (available_ip_addrs[idx], 22, 'user', 'passwd', timeout=1)
stdin, stdout, stderr = ssh.exec_command('ls -l')
print(().decode())
()
server_ip_addr = available_ip_addrs[idx]
break
except:
print('except')
finally:
print('finished')
print('*'*30, '服务器IP地址', '*'*30)
print('服务器IP为:', available_ip_addrs[idx])
参考文献:
1.Python:用pythonping处理ping_python ping模块_玩转测试开发的博客-****博客