python之SSH(交互式和非交互式)

来源:互联网 发布:无限制搜索工具mac 编辑:程序博客网 时间:2024/06/07 00:12

python中有一个paramiko,功能强大,用来做SSH比较方便

先上代码

import paramiko
class SSHConnection(object):    def __init__(self, host, port, username, password):        self._host = host        self._port = port        self._username = username        self._password = password        self._transport = None        self._sftp = None        self._client = None        self._connect()  # 建立连接    def _connect(self):        transport = paramiko.Transport((self._host, self._port))        transport.connect(username=self._username, password=self._password)        self._transport = transport    #下载    def download(self, remotepath, localpath):        if self._sftp is None:            self._sftp = paramiko.SFTPClient.from_transport(self._transport)        self._sftp.get(remotepath, localpath)    #上传    def put(self, localpath, remotepath):        if self._sftp is None:            self._sftp = paramiko.SFTPClient.from_transport(self._transport)        self._sftp.put(localpath, remotepath)    #执行命令    def exec_command(self, command):        if self._client is None:            self._client = paramiko.SSHClient()            self._client._transport = self._transport        stdin, stdout, stderr = self._client.exec_command(command)        data = stdout.read()        if len(data) > 0:            print data.strip()   #打印正确结果            return data        err = stderr.read()        if len(err) > 0:            print err.strip()    #输出错误结果            return err    def close(self):        if self._transport:            self._transport.close()        if self._client:            self._client.close()

接下来就简单测试一下exec_command这个命令,比较常用

if __name__ == "__main__":    conn = SSHConnection('ip', port, 'username', 'password')    conn.exec_command('ls -ll')    conn.exec_command('cd /home/test;pwd')  #cd需要特别处理    conn.exec_command('pwd')    conn.exec_command('tree /home/test')
exec_command这个函数如果想cd,可以使用pwd这样可以到当前目录而不是初始目录,但是有些情况下,比如chroot,是做不到的,这个时候就需要新的方法


上代码

ssh = paramiko.SSHClient() #创建sshclient    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #目的是接受不在本地Known_host文件下的主机。    ssh.connect("ip",port,'username','password')    command='chroot /xxx\n'     #conn.write(command)    chan=ssh.invoke_shell()#新函数    chan.send(command+'\n')#\n是执行命令的意思,没有\n不会执行 time.sleep(10)#等待执行,这种方式比较慢#这个时候就可以在chroot目录下执行命令了    res=chan.recv(1024)#非必须,接受返回消息    chan.close()

注意invoke_shell这个函数即可

另外使用这个函数命令后面记得加“\n”


阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕妇流清水鼻涕怎么办 鼻涕是金黄的 怎么办 宝宝流鼻涕有痰怎么办 宝宝老是咳嗽流鼻涕怎么办 借钱逾期不还怎么办 借钱遇到老赖怎么办 如果造事者拒不执行赔偿怎么办? 遇到新疆暴徒来怎么办 隆胸一年下垂了怎么办 自动雨伞坏了怎么办 手机验证码搞忘了怎么办 uplay 登录不上怎么办 滴滴账号永久封禁怎么办 steam游戏买不了怎么办 电脑登不了游戏怎么办 育碧帧数低怎么办 帐号被盗怎么办微信 育碧登录错误怎么办 头盔买小了怎么办 上海离职了社保怎么办 日本瓦斯没交怎么办 半自动咖啡机自动出水怎么办 父母太粘自己怎么办 铜耳环变黑了怎么办 秋田犬爱打架怎么办 僧人建设庙宇资金怎么办 wifi总是掉线怎么办 微博授权失败怎么办 新浪微博被官方封号怎么办 电磁波辐射重度异常怎么办 卖鞋没有生意怎么办 华为手机越来越卡怎么办 华为手机电越充越少怎么办 土炕有裂缝冒烟怎么办 农村土炕不好烧怎么办 夏天土炕不好烧怎么办 怎么办我是个肚脐控 联想笔记本电池显示损坏怎么办 电脑关机没反应怎么办 变色灯坏了怎么办 衣服颜色太艳怎么办