Python模拟SSH登录字符图形菜单

本文说明如何使用Python模拟SSH登录字符图形菜单(不知道这种菜单叫啥名字,姑且这么叫),并选择相应的菜单项进行操作。
以下图为例,在SSH成功登录后,选择第7行的改密功能项,重复输入密码确认后完成改密,所对应的Python脚本如下。
在这里插入图片描述
在这里插入图片描述

#!/usr/bin/python
# -*- coding: utf-8 -*-

import time
import paramiko

ssh = paramiko.SSHClient()
#这行代码的作用是允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

old_pwd='xxxxxx'
new_pwd='xxxxxx'

ssh.connect(
    hostname = 'xx.xx.xx.xx',
    port = xxx,
    username = "xxxx",
    password = old_pwd
)

# 这段是和命令行交互的写法,和本文无关,但也可以看下
#stdin,stdout,stderr = ssh.exec_command("\nls\n",timeout=60)
#resp=stdout.read()
#print(resp)

channel=ssh.invoke_shell() #交互shell
time.sleep(1)
#channel.send('\x1b') # 这个是发送ESC
#channel.sendall(chr(0x1b)+'OB') # 这个和发送\x1bOB效果一样
channel.sendall('\x1bOB\x1bOB\x1bOB\x1bOB\x1bOB\x1bOB\r') #  发送6个下移箭头,选中第7行的功能项
time.sleep(1)
resp = channel.recv(100000)
if "Please enter new password for" in resp:
	channel.sendall(new_pwd+'\r')
	channel.sendall(new_pwd+'\r')#confirm pwd
	time.sleep(1)
	resp = channel.recv(100000)
	if 'success' in resp:
		print('modify pwd success.')
	ssh.close()
else:
	ssh.close()
	

注:为啥发送下移箭头的键值是\x1bOB呢?其实是参考了这个how-to-send-an-arrow-key-use-paramiko-library-in-python后,再结合在Ubuntu终端里测试了下移箭头对应的可打印字符为^[OB而猜出来的,具体原理没有深究。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值