Python实现Telnet连接
2024-09-03 21:26:49
import logging
import telnetlib
import time
class TelnetClient():
def __init__(self,):
self.tn = telnetlib.Telnet()
# 此函数实现telnet登录主机
def login_host(self,host_ip,username,password):
try:
# self.tn = telnetlib.Telnet(host_ip,port=23)
self.tn.open(host_ip,port=23)
except:
logging.warning('%s网络连接失败'%host_ip)
return False
# 等待login出现后输入用户名,最多等待10秒
self.tn.read_until(b'login: ',timeout=10)
self.tn.write(username.encode('ascii') + b'\n')
# 等待Password出现后输入用户名,最多等待10秒
self.tn.read_until(b'Password: ',timeout=10)
self.tn.write(password.encode('ascii') + b'\n')
# 延时两秒再收取返回结果,给服务端足够响应时间
time.sleep(2)
# 获取登录结果
# read_very_eager()获取到的是的是上次获取之后本次获取之前的所有输出
command_result = self.tn.read_very_eager().decode('ascii')
if 'Login incorrect' not in command_result:
logging.warning('%s登录成功'%host_ip)
return True
else:
logging.warning('%s登录失败,用户名或密码错误'%host_ip)
return False
# 此函数实现执行传过来的命令,并输出其执行结果
def execute_some_command(self,command):
# 执行命令
self.tn.write(command.encode('ascii')+b'\n')
time.sleep(2)
# 获取命令结果
command_result = self.tn.read_very_eager().decode('ascii')
logging.warning('命令执行结果:\n%s' % command_result)
# 退出telnet
def logout_host(self):
self.tn.write(b"exit\n")
if __name__ == '__main__':
host_ip = '10.82.21.145'
username = 'root'
password = 'focus'
command = 'reboot'
telnet_client = TelnetClient()
# 如果登录结果返加True,则执行命令,然后退出
if telnet_client.login_host(host_ip,username,password):
telnet_client.execute_some_command(command)
telnet_client.logout_host()
转:https://www.cnblogs.com/lsdb/p/9258964.html
最新文章
- Nginx配置文件解析
- 移动端特殊css样式
- yii2-按需加载并管理CSS样式/JS脚本
- linux下的shell运算(加、减、乘、除)
- jquery layer弹出层插件
- 高级进程间通信之基于STREAMS的管道
- poj 2186 Popular Cows (强连通分量+缩点)
- 第三方分页控件aspnetPager出现问题解决方法
- VC-关于VC++ 6.0的那些事儿
- poj2739
- boost vc编译
- select count(*)优化 快速得到总记录数
- Linux虚拟主机通过FTP软件创建目录时提示550 Create Directory Operation Failed
- 关于MongoDB数据库的日志解析
- Web App架构
- [转]BT原理分析
- iptables简单应用
- UVa 1603 破坏正方形
- 前端之css笔记2
- fzu 2154 YesOrNo