用Python写脚本:通过ssh在Windows下批量管理Linux

对于超过10台以上的linux服务器,就需要考虑如何进行批量管理了。

我了解的通常的方法有以下几种:

一:在linux系统下,编写except脚本,通过ssh远程执行命令、上传下载文件等。

二:使用SecureCRT的ChatWindow功能批量发送相同命令到某一批服务器。

三:用puppy等工具管理。

其中方法一没什么问题,被管理服务器也不需要安装任何特殊程序或服务,但就是需要在linux下进行操作,日常办公PC可能大多数装的是Windows,这样可能要在虚拟机中进行操作,不太方便。

方法二:仅适用于对为数不多的服务器进行少量命令操作。

方法三:需要安装客户端和管理工具,配置比较麻烦但功能强大。

本文介绍的方法,类似于方法一,但使用的是Python脚本,得益于Python跨平台性,所有操作可在Windows下进行。

本文介绍的方法大概适合大于10台小于100台的情况,因为本文的方法仅涉及远程执行命令,上传、下载文件等。

一、环境准备:

1,安装Python,去https://www.python.org/downloads/windows/下载Python2的最新版本,

如:32位:https://www.python.org/ftp/python/2.7.6/python-2.7.6.msi

64位:https://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi

记得在系统-属性-高级-环境变量-PATH中,添加Python的安装路径。

2,安装pycrypto模块,去http://www.voidspace.org.uk/python/modules.shtml#pycrypto下载。

如:32位:http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe

64位:http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win-amd64-py2.7.exe

3,安装paramiko模块,下载地址:http://pan.baidu.com/s/1sjNNNfZ,解压后,在DOS窗口下进入目录,输入

setup.py install回车,执行安装。

4,打开CMD,输入python回车,在提示符下输入import paramiko,如果没有错误提示,就说明环境已经准备好了。

二、在远程服务器上批量执行命令:

1、准备服务器列表文件server_list.txt

按“服务器IP+空格+登录用户名+登录密码”格式录入服务器信息到serverlist.txt,如:

192.168.1.101 root 123456

192.168.1.102 root 123456

......

2、准备要执行的命令列表文件cmd_list.txt,每行一个命令,如:

ls -l /root

ifconfig

......

3、新建文本文件pyssh.txt,改名为pyssh.py,然后右键Edit with IDLE,输入以下内容:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import paramiko

import fileinput

    

if __name__==‘__main__‘:

    #读取服务器列表文件

    serverlist = open("server_list.txt""r")

        

    for line in serverlist:

        #取IP、用户名、密码

        ip=line.split()[0]

        username=line.split()[1]

        password=line.split()[2]

            

        #建立连接

        s=paramiko.SSHClient()

        s.set_missing_host_key_policy(paramiko.AutoAddPolicy())

        s.connect(hostname = ip,username = username, password = password)

    

        #打印分割符

        print(‘    Server : ‘+ip)

    

        #读取命令文件

        cmdlist = open("cmd_list.txt","r")

        #执行命令

        for line in cmdlist:

            print(‘        ‘+line)

            stdin,stdout,stderr=s.exec_command(line)

            print stdout.read()

                

        #关闭连接

        s.close()

           

    serverlist.close()

4、把以上3个文件放到一个目录,DOS到这个目录执行pyssh.py就可以看到执行结果了。

三、上传文件

1、准备好要上传的文件,放到一个空的专用的目录里。

2、准备好要上传的服务器列表Server_list.txt。

3,编写以下内容存为pyupload.py

#!/usr/bin/python

# -*- coding: utf-8 -*-

   

import paramiko,datetime,os,sys,fileinput

   

if __name__==‘__main__‘:

    #读取服务器列表文件

    serverlist = open("server_list.txt""r")

       

    for line in serverlist:

        #取IP、用户名、密码

        ip=line.split()[0]

        username=line.split()[1]

        password=line.split()[2]

           

        port=22

        #本地路径

        l_dir=‘D:\\upload\\‘

        #远程路径

        r_dir=‘/tmp/‘

           

        #打印分割符

        print(‘    Server : ‘+ip)

   

        #建立连接

        t=paramiko.Transport((ip,int(port)))

        t.connect(username=username,password=password)

        sftp=paramiko.SFTPClient.from_transport(t)

   

        #分别上传文件

        files=os.listdir(l_dir)

        for in files:

            #本地路径+文件名

            l_file=os.path.join(l_dir,f)

            #远程路径+文件名

            r_file=os.path.join(r_dir,f)

            print(‘        ‘+l_file+‘ ---> ‘+r_file)

            #上传

            sftp.put(l_file,r_file)         

        t.close()     

    serverlist.close()

3、修改上面代码的本地路径,把pyupload.py和server_list.txt文件放到一个目录,DOS到这个目录执行pyupload.py即可批量上传文件到批量服务器。注意远程服务器的路径必需存在,否则会报错。

四、下载文件:

1,建立一下空的专用的下载目录download。

2、准备好要上传的服务器列表Server_list.txt。

3、编写文件file_list.txt,每行一个要下载的远程服务器文件的完整路径,如:/root/instll.log

4,编写以下内容存为pydownload.py

#!/usr/bin/python

# -*- coding: utf-8 -*-

   

import paramiko,datetime,os,sys,fileinput

   

if __name__==‘__main__‘:

    #读取服务器列表文件

    serverlist = open("server_list.txt""r")

           

    for line in serverlist:

        #取IP、用户名、密码

        ip=line.split()[0]

        username=line.split()[1]

        password=line.split()[2]

        port=22

   

        filelist = open("D:\\download\\file_list.txt","r")

   

        #本地路径

        l_dir=‘D:\\download\\download\\‘

        os.chdir(l_dir)

           

        if os.path.exists(ip) != True:

            os.mkdir(ip)

        l_dir=os.path.join(l_dir,ip)

           

        print(‘    Server : ‘+ip)

        #建立连接

        t=paramiko.Transport((ip,int(port)))

        t.connect(username=username,password=password)

        sftp=paramiko.SFTPClient.from_transport(t)

        #分别下载文件

        for r_file in filelist:

            r_file=r_file.strip(‘\n‘)

            l_file=os.path.join(l_dir,os.path.basename(r_file))

            print(‘        ‘+r_file+‘ ---> ‘+l_file)

            #下载

            sftp.get(r_file,l_file)

        t.close()

   

    serverlist.close()

    filelist.close()

5、修改上面代码的本地路径,把pydownload.py和server_list.txt文件放到一个目录,DOS到这个目录执行pyupload.py即可批量下载文件到本地,且每个服务器建立一个目录。

时间: 2024-10-12 10:01:18

用Python写脚本:通过ssh在Windows下批量管理Linux的相关文章

UnixShellManager-linux/unix/windows服务器批量管理工具(带UI图形)

Windows 下 批量管理,批量监控,批量操作,批量安全扫描 linux Solaris Aix HP-Unix Windows 等操作系统界面最简洁的图形工具. QQ: 3468937449  QQ 群: 561663572  一起学习交流. 下载 地址: http://download.csdn.net/detail/chufeng_79/9599371 批量执行多台服务器命令,批量修改密码,批量执行服务器脚本,批量上传文件,解放你的双手,五分钟批量执行上千台服务器命令. Unix 实验室

记事本中写c/c++程序在Windows下执行

 1.在桌面新建一个1.c,内容如下: 2.打开cmd命令行窗口,进入CodeBlock安装目录下的:E:\Installed\CodeBlocks\MinGW,然后执行mingwvars.bat 3.进入1.c所在的目录: 4.执行编译等动作 5.接着使用VC的编译器进行执行代码. 6.点击VS2013开发人员命令提示,然后进入1.c所在目录,执行1.c,执行后的效果如下: 执行在命令中输入: 1,这时候同样会出现和上面相同的效果. 记事本中写c/c++程序在Windows下执行

Python自动化运维开发之paramiko(远程批量管理服务器)

一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助. 二:安装方法 安装paramiko有两个先决条件,python和另外一个名为PyCrypto的模块.唯一麻烦的就是安装PyCrypto时,需要GCC库编译,如果没有GCC库会报错,会导致PyCrypto以及paramiko无法安装

VNCViewer Windows下远程连接Linux桌面

最近项目需求,需要将写的工程部署到centos6.5服务器上,但是出现了各种错误,就想着在linux下再调试代码.但是之前都是通过ssh链接远程服务器的,在ssh中肯定不能打开eclipse等集成开发工具,因此我们要在远程服务器上安装桌面及vncserver,然后在windows中用vncViewer连接. 一:服务器端(Centos6.5) 1:安装桌面: # yum groupinstall "GNOME Desktop Environment"(CentOS 5.x安装GNOME

windows下批量杀死进程

有时候由于病毒或其他原因,启动了一系列的进程,并且有时杀了这个,又多了那个.使用命令taskkill可将这些进程一下子全部杀光: C:\Users\NR>taskkill /F /im frontpg.exe 成功: 已终止进程 "FRONTPG.EXE",其 PID 为 3732. 成功: 已终止进程 "FRONTPG.EXE",其 PID 为 24544. 成功: 已终止进程 "FRONTPG.EXE",其 PID 为 3612. 错误

python windows下批量修改文件名

经常会下载一些资料和学习视频,往往这些资料名称很多,想批量修改又很不方便,刚好用python写一个修改文件名的小程序. windows下安装python这个就不多说了,直接下载安装程序安装即可.https://www.python.org/downloads/ 3.x 2.x 都可以 我这个程序,是利用正则表达式的方式,针对一些比较偏的文件名进行过滤修改.没有针对子目录修改,大家可以自己行加以利用修改. rename-input.py #!/usr/bin/env python #coding:

Python学习笔记(三)windows下安装theano

早就听说theano很难安装,这一次算是初步尝试,不知道会不会有其它问题. 0 参考材料 (1)win 8.1 64bit 深度学习theano 安装设置 (2)Windows下安装theano成功,但一import就报decode错是什么原因? (3)Wndows8.1 64bit环境下搭建深度学习平台之Theano安装配置 (4)deep learning学习环境Theano安装(win8+win7) 1 简单记录过程 (1)安装anaconda:Download Anaconda now!

Python科学计算(二)windows下开发环境搭建(当用pip安装出现Unable to find vcvarsall.bat)

用于科学计算Python语言真的是amazing! 方法一:直接安装集成好的软件 刚开始使用numpy.scipy这些模块的时候,图个方便直接使用了一个叫做Enthought的软件.Enthought是一家位于美国得克萨斯州首府奥斯汀的软件公司,主要使用Python从事科学计算工具的开发.Enthought里面包含了很多库,不需要你自己安装就可以直接使用了. 其实还又很多Python科学计算的集成软件,比如Python(x, y)和WinPython,个人感觉WinPython还是不错的,里面包

windows下批量部署简易脚本

windows下部署工程主要是复制或者粘贴,以下BAT脚本就是利用系统自带的xcopy命令来完成复制与粘贴部署的. 1.什么是XCOPY XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝系统文件:使用时源盘符.源目标路径名.源文件名至少指定一个:选用/S时对源目录下及其子目录下的所有文件进行COPY.除非指定/E参数,否则/S不会拷贝空目录,若不指定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录:选用/V参数时,对拷贝的扇区都进行较验,但速度会