python 之 通过脚本远程window、linux、mysql

1、py脚本操作远程window服务器,通过挂载磁盘的方式实现,缺点是:有时删除挂载磁盘之后并不能马上释放,所以多人频繁操作同一个远程window磁盘就容易报错出问题,废话不多说,直接上代码:

    n_cmd = r"n:"
    cmd = r"net use n: \\192.168.1.2\d$  serverpasswd /user:servername" #serverpasswd:远程服务器的密码  servername:远程服务器的用户名
    delcmd = r"net use n: /del"

    #n盘不存在,则执行挂载操作
    if os.system(n_cmd) != 0:
        if os.system(cmd) != 0:
            #使用raise语句自己触发异常,触发异常后,后面的代码就不会再执行
            print "[ERROR]Failed to net window server!"
            raise Exception("[ERROR]Failed to net window server!") 

#------------挂载之后就能想操作本地文件一样操作远程挂载磁盘的文件了

    #n盘存在,则执行删除挂载操作,删除失败则报错退出
    if os.system(n_cmd) == 0:
        if os.system(delcmd) != 0:
            print "[ERROR]Failed to delete net disk!"
            raise Exception("[ERROR]Failed to delete net disk!")

 

2、远程操作linux使用ssh协议,需要安装paramiko模块

先来说下怎么安装paramiko模块,之前为了安装这个模块,搞了好久,走了好多弯路,最后总结了下安装步骤:

实际的安装步骤应该是:
1、安装Python2.7软件(安装完之后将类似以下两个路径加到环境变量里面:C:\Python27;C:\Python27\Scripts)
2、再安装VCForPython27.msi
3、下载paramiko(paramiko-master.zip),下载网址https://github.com/paramiko/paramiko
将下载的包解压之后进入解压目录:
执行pip install --upgrade pip 升级pip版本(我本地安装的时候提示要我升级pip版本)
执行pip install paramiko 安装paramiko
4、执行import paramiko看是否成功

 

好了,贴代码看如何访问远程linux:

    import paramiko

    server_ip = '192.168.1.3
    server_user = 'root' 
    server_passwd = root' 
    server_port = 22
    ssh = paramiko.SSHClient()
    #目的是接受不在本地Known_host文件下的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    ssh.connect(server_ip, server_port,server_user, server_passwd) 

    #可以开始操作远程文件了,随便grep个文件

    profile = r'/root/abc/abc.txt'   
    command = r"grep '^%s:' %s"%(name,profile)
    stdin, stdout, stderr = ssh.exec_command(command)
    out = stdout.readline() #将返回结果取出

    #关闭远程

     ssh.close()

 

3、连接mysql数据库,需要安装MySQLdb,之前有一篇博文是写如何安装MySQLdb的,有需要的可以看下,由于贴的脚本里面用到了加密,所以多加载一个hashlib模块进来(其他系统常规模块自己加载进来,这里就不贴了)

   import hashlib
   import MySQLdb

    try:
        connection = MySQLdb.connect(user="myname",passwd="mypasswd",host="192.168.1.4",port =3306,db="mydb")
    except:
        print "Could not connect to MySQL server."
        sys.exit(1)

    sql_select=r"select a.salt from myusers a where a.login = 'abc'"
    cursor = connection.cursor()   
    cursor.execute(sql_select) 

    if cursor.rowcount != 0:
        print "Rows selected:", cursor.rowcount

        #for row in cursor.fetchall():
            #f.write("%s\t%s\t%s\t%s:%s\t%s:%s\t\t%s\n"%(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]))
        salt = cursor.fetchall()[0][0]
        saltpasswd =salt+'--'+newpasswd
        newsha1passwd = hashlib.sha1(saltpasswd).hexdigest()
        sql_update=r"UPDATE myusers SET cryptedpassword = '%s' WHERE login = 'abc'"%newsha1passwd
        try:
           cursor.execute(sql_update)
           connection.commit()
        except:
           connection.rollback()

    cursor.close()
    connection.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值