这个脚本执行的前提是,得先做好基于密钥的认证,这样可以避免频繁输入密码,基于密钥的认证这里就不写了。

脚本很简单,使用subprocess模块的call()方法来执行shell命令。刚开始学,一步步来,哈哈。。。

后面再学习学习paramiko模块,多线程。。。


下面是我写的脚本simple_ssh.py,贴上来,自己留作记录:


#!/usr/bin/env python
# Filename: simple_ssh.py
# Author: zhangliang - z_liang90@126.com
# Last modified: 2014-02-26 11:36
# Description:
# -*- coding:UTF-8 -*-
import subprocess
import sys
machines = {
    'Centos6.4': ('10.21.178.239', 'root', '22',),
    'localhost': ('192.168.10.25', 'root', '22',),
}
def ssh_Command(cmd):
    try:
        for host in machines:
            print ('-'*30 + ' \033[32;1m%s\033[0m ' + '-'*30) % machines[host][0]
            subprocess.call('ssh -p %s %s@%s %s ' % \
                (machines[host][2], machines[host][1], machines[host][0], cmd), shell=True)
    except KeyboardInterrupt:
        sys.exit('\n')
if __name__ == '__main__':
    if len(sys.argv) != 2:
        print "\033[31;1mUsage: python %s 'commands'\033[0m" % sys.argv[0]
        sys.exit()
    cmd = sys.argv[1]
    #call ssh_Command
    ssh_Command(cmd)


简单演示下:

[root@VMtemp ssh]# python simple_ssh.py "pwd"
------------------------------ 10.21.178.239 ------------------------------
/root
------------------------------ 192.168.10.25 ------------------------------
/root
[root@VMtemp ssh]#
[root@VMtemp ssh]# python simple_ssh.py "df -h"
------------------------------ 10.21.178.239 ------------------------------
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/vg--root-LogVol00   18G  7.2G  9.5G  44% /
tmpfs                          497M  224K  497M   1% /dev/shm
/dev/sda1                      194M   97M   88M  53% /boot
------------------------------ 192.168.10.25 ------------------------------
Filesystem                     Size  Used Avail Use% Mounted on
/dev/mapper/vg--root-LogVol00   18G  7.2G  9.5G  44% /
tmpfs                          497M  224K  497M   1% /dev/shm
/dev/sda1                      194M   97M   88M  53% /boot
[root@VMtemp ssh]#