免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1806 | 回复: 5

Python的ssh执行命令 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-01-06 16:35:38
发表于 2017-04-10 17:25 |显示全部楼层
python ssh执行命令的时候,输出结果前面为啥总有一个冒号,这个是获得登录的IP,其他例子也试过了,都是一样的

QQ图片20170410172334.png


代码:
  1. #!/usr/bin/python
  2. #encoding=utf8
  3. import pexpect
  4. import traceback
  5. import os
  6. import getpass

  7. def ssh(host,username,password,command):
  8.     child = pexpect.spawn('ssh -l %s %s "%s"' %(username,host,command))
  9.     ret = child.expect([pexpect.TIMEOUT,'Are you sure you want to continue connecting','password'])
  10.     if ret == 0 :
  11.         print 'ERROR'
  12.         print 'SSH could not login,Here is what SSH said:'
  13.         print child.before,child.after
  14.         return None
  15.     if ret == 1 :
  16.         child.sendline('yes')
  17.         i = child.expect([pexpect.TIMEOUT,'password'])
  18.         if i == 0 :
  19.             print 'ERROR'
  20.             print 'SSH could not login,Here is what SSH said:'
  21.             print child.before,child.after
  22.     child.sendline(password)
  23.     return child

  24. def main():
  25.     username = 'root'
  26.     password = '123456'
  27.     #getpasswd 交互式获取用户输入的密码
  28.     #password = getpass.getpass()
  29.     host = '10.0.0.148'
  30.     command = "ifconfig eth0 |grep 'inet addr'|awk -F' ' '{printf $2}'|awk -F':' '{printf $2}'"
  31.     child = ssh(host,username,password,command)
  32.     child.expect(pexpect.EOF)
  33.     print child.before

  34. if __name__ == '__main__':
  35.     try:
  36.         main()
  37.     except Exception,e:
  38.         print str(e)
  39.         traceback.print_exc()
  40.        # os._exit(1)表示如遇到错误,退出程序,后面的都不会执行
  41.         os._exit(1)

  42.    

复制代码


论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
发表于 2017-04-12 20:49 |显示全部楼层
用paramiko模块吧,很方便

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-01-06 16:35:38
发表于 2017-04-13 10:32 |显示全部楼层
回复 2# baby_神
baby神:
           我待会儿试试来,我想做的是那个自动上线部署,我的想法是我得一台一台的ssh上去才能执行一些东西,我是得用多线程吗?因为有很多台嘛

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-01-06 16:35:38
发表于 2017-04-13 11:08 |显示全部楼层
回复 2# baby_神
baby神:
      刚刚试了一下,体验到了 哈哈哈哈哈哈

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2018-01-06 16:35:38
发表于 2017-04-13 15:27 |显示全部楼层
回复 3# Lemon_乐
baby神:
     stdin, stdout, stderr = ssh.exec_command()这里我要执行很多很多命令,只能全部写在这里吗

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
发表于 2017-04-13 18:17 |显示全部楼层
回复 5# Lemon_乐

是的,但是你可以写多条
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP