使用python远程登录

最近要使用python做一个在web上管理交换机的程序,需要远程登录,就查了点资料,由于还没有搞到交换机,就先用自己的机器测试一下。

首先python的标准库中包含telnet,用起来也很方便,查看一下文档写了个小程序:

[python] view plaincopy

  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. import telnetlib
  4. host = "127.0.0.1"
  5. userName = ‘root‘
  6. password = ‘123456‘
  7. enter = ‘\n‘
  8. t = telnetlib.Telnet(host)
  9. t.read_until("login: ",1)
  10. t.write(userName + enter)
  11. t.read_until("Password: ",1)
  12. t.write(password + enter)
  13. t.write("ls"+enter)
  14. t.write("exit"+enter)
  15. print t.read_all()

输出结果:

[plain] view plaincopy

  1. Last login: Wed Nov  2 14:51:36 on console
  2. shi-kefumatoiMac:~ root# .CFUserTextEncoding    .subversion     Library
  3. .forward        .viminfo        nat.sh
  4. .sh_history     .vimrc          noc
  5. shi-kefumatoiMac:~ root# logout

程序很简单,登录自己的机器,执行ls命令,然后输出结果。

telnet很好用,但是总是有人喜欢更强大更好用的程序,于是就有了pexpect,pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。 Pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互;可以用来自动复制软件安装包并在不同机器自动安装;还可以用来实现软件测试中与命令行交互的自动化。

看了写资料,也用pexpect写了一个小程序,实现刚才同样的功能:

[python] view plaincopy

  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. import pexpect
  4. address = ‘127.0.0.1‘
  5. userName = ‘root‘
  6. password = ‘123456‘
  7. cmd = ‘telnet ‘ + address
  8. prompt = ‘[$#>]‘
  9. child = pexpect.spawn(cmd)
  10. index = child.expect([‘login‘,pexpect.EOF,pexpect.TIMEOUT],timeout=1)
  11. if index == 0:
  12. child.sendline(userName)
  13. index = child.expect(‘Password‘,timeout=1)
  14. child.sendline(password)
  15. child.expect(prompt,timeout=1)
  16. child.sendline(‘ls‘)
  17. child.expect(‘ls‘,timeout=1)
  18. child.expect(prompt,timeout=1)
  19. print child.before
  20. else:
  21. print ‘expect "login",but get EOF or TIMEOUT‘
  22. child.close()

输出结果:

[plain] view plaincopy

  1. .CFUserTextEncoding .subversion     Library
  2. .forward        .viminfo        nat.sh
  3. .sh_history     .vimrc          noc
  4. shi-kefumatoiMac:~ root

当然,这个程序只是pexpect的一个实例程序,简单介绍的它的简单用法,还不足以说明它t的强大。

参考资料:

python文档:http://docs.python.org/library/telnetlib.html

IBM developerWorks: http://www.ibm.com/developerworks/cn/linux/l-cn-pexpect1/

http://www.ibm.com/developerworks/cn/linux/l-cn-pexpect2/

使用python远程登录

时间: 2024-07-31 07:27:58

使用python远程登录的相关文章

Python远程登录Linux操作系统,执行命令、创建目录、上传及下载文件

主要是创建文件: #! /bin/bash # -*- coding: utf-8 -*- import paramiko import os ssh = paramiko.SSHClient() key = paramiko.AutoAddPolicy() ssh.set_missing_host_key_policy(key) pkey = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa') paramiko.util.log

python远程登录Paramiko模块的安装

最近做云平台的项目,需要使用python来管理所有的主机,我选择了paramiko.它跨平台的,linux和window都可以使用,pssh只支持linux. 1:安装gcc和python-devel yum install gcc gcc-c++ python-devel 2:  paramiko依赖pycrypto模块,要先下载pycrypto安装 wget http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz

Python远程登录主机并生成表

使用paramiko批量查询主机信息的脚本 由于打批量安装主机后,主机IP有时候dhcp分配的会乱,但是由于主机数量比较大,排查起来比较麻烦,所以写了一个巡检脚本(配合ipmi使用,此次脚本里面没有使用到生产环节上的ipmitool的命令) 有需要的可以把此当成模板,进行修改. #-*-coding:utf-8-*- import paramiko  import time import xlsxwriter F = file('C:/Users/Administrator/Desktop/ho

[Python Fabric] [SSH] Mac OS X 10.9 + Vagrant虚拟环境使用Python Fabric进行SSH远程登录的简单实验

1. ssh客户端生成key 1 $ ssh-keygen -t rsa -b 4096 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/Users/(username)/.ssh/id_rsa): vagrantid_rsa 4 Enter passphrase (empty for no passphrase): 5 Enter same passphrase again: 6

Linux 远程登录——(九)

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; ms

20.27分发系统介绍;20.28expect脚本远程登录;20.29expect脚本远程执行命令;20.30expect脚本传递参数

20.27 分发系统介绍 shell项目-分发系统-expect 20.28 expect脚本远程登录 1. 安装expect [[email protected] ~]# yum install -y expect 自动远程登录 2. 创建配置1.expect脚本(远程登录) [[email protected] ~]# vim 1.expect 添加内容(自动远程登录hao2机器并执行命令) #! /usr/bin/expect set host "192.168.211.129"

[CentOS 7系列]使用密钥认证机制远程登录

当服务器操作系统没有配置远程密钥认证时,默认需要手动输入密码口令. 以下用putty为例: 1.使用putty远程ssh登录192.168.137.100这台主机 2.第一次登录选择"是(Y)",信任该主机,缓存该主机登录信息. 3.登录时,要输入正确的账户和口令,才能正常登录该主机. 下面使用putty和xshell演示如何使用密钥机制远程登录: 一.使用putty密钥认证机制登录 1.打开putty安装目录中的putty key generator软件,点击"Genera

交换机远程登录

四步: 一:设置ENABLE密码 enable password XXX 二:设置线程: line vty 0 4   五个线程 login local   使用本地用户名 三:设置本地用户名与密码 username YYY password XXX 四:设置管理IP地址 int vlan 1 ip addr A.B.C.D A.B.C.D 交换机远程登录,布布扣,bubuko.com

windows server 2008 设置多用户同时远程登录

>Windows server 2008默认只支持一个administrator用户登陆,一个登录后另一个就被踢掉了,有没有办法像Windows Server 2003那样允许多用户用同时同一个用户名登录? 首先安装终端服务 下面选终端服务器 再下面的根据你的情况选吧 打开终端服务器配置,在管理工具里面 连接:RDP-tcp 点右键,属性.网络适配器-最大连接数2.默认情况下如果你不添加终端服务功能,最大只能调整为同时2个连接.想设多少自己填  终端服务器授权模式:点右键,属性.常规,限制每个用