参考网址: http://docs.paramiko.org/en/stable/api/channel.html
- 需求:
- 使用普通用户登录到远程服务器
- sudo到root用户,并执行指定命令
- 获取命令的执行结果
#!/usr/bin/env python3
import paramiko,time
command = 'ls -al /tmp/ \n'
buff_size = 1024
wait_time = 1
def ssh_for_root_cmd_recv(channel,cmd):
buff = bytes()
channel.send(cmd)
time.sleep(wait_time)
while channel.recv_ready():
resp = channel.recv(buff_size)
buff += resp
buff_list = (buff.decode('utf-8')).split('\n')
return (buff_list[1:-1])
def ssh_for_root_cmd_run():
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('localhost', port=22, username='user1', key_filename='/home/user1/.ssh/test.pem', timeout=3,)
chan = ssh.invoke_shell()
# 过滤登录时的信息。
time.sleep(wait_time)
while chan.recv_ready():
chan.recv(buff_size)
# print((chan.recv(buff_size)).decode('utf-8'))
# 切换到root用户
ssh_for_root_cmd_recv(chan,'sudo su - \n')
# 运行需要执行的root命令。
cmd_resoult = ssh_for_root_cmd_recv(chan,command)
chan.close()
ssh.close()
return (cmd_resoult)
if __name__ == '__main__':
for resoult_line in ssh_for_root_cmd_run():
print (resoult_line)
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章