December 2015 Blog Posts

安装使用virtualenv

LC 2015-12-18 Python

virtualenv用于创建独立的环境,多个Python相互独立,互不影响,它能够:
1. 在没有权限的情况下安装新套件
2. 不同应用可以使用不同的套件版本
3. 套件升级不影响其他应用

用类似“Windows下Python,setuptools,pip,virtualenv的安装”的方法在linux下安装了virtualenv。

其中有一段非常有用的话:“需要注意,当前irtualenv的版本是1.11,安装的时候如果不设定==1.10.1,默认会安装最新版本,而1.11版本的virtualenv是有问题的,安装1.11后,在创建环境的时候会失败,报错: setuptools pip failed with error code 1.这个问题是1.11的本身的问题,用1.10.1版本,没有这个问题,所以我们安装的时候需要明确版本1.10.1。”

 

这里记录一下用法:

[root@lc ppy]# virtualenv vProject
New python executable in vProject/bin/python
Installing Setuptools..............................................................................................................................................................................................................................done.
Installing Pip.....................................................................................................................................................................................................................................................................................................................................done.
[root@lc ppy]# cd python_env/
[root@lc python_env]# ls
bin  guessnumber.py  include  lib
[root@lc python_env]# cd bin/
[root@lc bin]# ls
activate  activate.csh  activate.fish  activate_this.py  easy_install  easy_install-2.7  pip  pip-2.7  python  python2  python2.7
[root@lc bin]# cd ..
[root@lc python_env]# cd ..
[root@lc ppy]# cd vProject/
[root@lc vProject]# source bin/activate  -- Comment:启动virtualenv虚拟环境
(vProject)[root@lc vProject]# deactivate -- Comment:退出virtualenv虚拟环境
[root@lc vProject]#

 

Just记录一下。

需要windows下安装方法的可移步“Windows下Python,setuptools,pip,virtualenv的安装”。

新手学Python-SSH登录

LC 2015-12-10 Python

python自动登录并执行命令:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# filename: pexpect_ssh.py
'''
Created on 2015-12-10

@author: LC
'''
import pexpect

if __name__ == '__main__':
    user = 'admin'
    ip = '192.168.0.1'
    mypassword = 'password'

    print user
    child = pexpect.spawn('ssh %s@%s' % (user,ip))
    child.expect ('password:')
    child.sendline (mypassword)

    child.expect('$')
    child.sendline('sudo -s')
    child.expect (':')
    child.sendline (mypassword)
    child.expect('#')
    child.sendline('ls -la')
    child.expect('#')
    print child.before   # Print the result of the ls command.
    child.sendline("echo '112' >> /home/lc/1.txt ")
    child.interact()     # Give control of the child to the user.

    pass

 

我们ssh远程登录的时候,首先输入ssh username@ipaddress,第一次登录的时候系统会提示是否需要继续连接。如果是,我们需要输入yes,然后等一段时间提示我们输入密码,这时候再输入密码。之后我们就登录成功,能够执行命令了。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pexpect

def ssh_cmd(ipaddress, passwd, cmd):
    ret = -1
    ssh = pexpect.spawn('ssh root@%s "%s"' % (ipaddress, cmd))
    try:
        i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5)
        if i == 0 :
            ssh.sendline(passwd)
        elif i == 1:
            ssh.sendline('yes\n')
            ssh.expect('password: ')
            ssh.sendline(passwd)
        ssh.sendline(cmd)
        r = ssh.read()
        print r
        ret = 0
    except pexpect.EOF:
        print "EOF"
        ssh.close()
        ret = -1
    except pexpect.TIMEOUT:
        print "TIMEOUT"
        ssh.close()
        ret = -2
    return ret

ssh_cmd("192.168.0.1", "ppppassword", "dir") # execute the ssh_cmd function

 

这个对于现在的我来说很有用,呵呵

利用pexpect还可以做telnet、ftp、ssh、scp等的自动登录。