Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1026191
  • 博文数量: 157
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1388
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-09 15:37
文章分类

全部博文(157)

文章存档

2023年(9)

2022年(2)

2021年(18)

2020年(7)

2017年(13)

2016年(53)

2015年(55)

我的朋友

分类: Python/Ruby

2015-09-24 11:58:26

我的python自动化测试机脚本中要实现修改远程linux机器上文件的内容,我的思路:
1.  我原来用过下面的函数可实现诸如获取远程机器上日志信息的脚本,就是通过在cmd中写入linux下的tail 命令来获取日志信息,于是我想到了scp命令,在本地修改文件,把修改好的文件通过scp到远程linux机器,但是遇到了问题:scp执行后需要手动输入远程机器的密码,中断了自动化,网上有解决的办法使不用输入密码验证,但看了感觉好麻烦,后来放弃了,如果朋友们觉得可行可帮我补充上,大家一起讨论
2.  后来想到了用wget获取更新的文件内容并保存到远程linux上,注意前提是本地机器上要有web服务器且服务已启动,我用的是nginx,所以才能用wget从这台机器的指定目录下下载内容
cmd="wget -O 远程linux机器放修改后文件的地方   本地机器修改后的文件地址”
调用下面的函数ssh_cmd(ip,port,user,passwd,cmd):
3. 试了一下,可以成功,真高兴
4. 现在都是远程操作机器执行一条linux命令,不知道能不能一次远程就能在远程机器上执行多条命令,待研究
附上远程操作函数:
def ssh_cmd(ip,port,user,passwd,cmd):
    out = None
    ssh = None
    try:
        ssh = paramiko.SSHClient() 
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(ip,port,user,passwd,timeout=5) 
        stdin, stdout, stderr = ssh.exec_command(cmd)
        out = stdout.readlines()
    except Exception, e:
        error('ssh_cmd error: ' %e) 
    finally:
        if ssh:
            ssh.close()
    return out
阅读(4407) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~