Python操作远程机器

下载文件

import paramiko

t = paramiko.Transport(("主机","端口"))
t.connect(username = "用户名", password = "口令")
sftp = paramiko.SFTPClient.from_transport(t)
remotepath=’/var/log/system.log’
localpath=’/tmp/system.log’
sftp.get(remotepath, localpath)
t.close()

参考链接

开垦WMI服务分界面

在开首-运转,输入services.msc,踏向劳动

澳门新葡亰平台官网 1

wmi启动.png

运维分界面:

澳门新葡亰平台官网 2

WMI.png

澳门新葡亰平台官网 ,正文介绍如何行使Python访谈WMI,并假定你曾经下载并设置了pywin32恢宏模块和WMI
Python模块。WMI是遵照pywin32库的强大库,何况暴光了有个别Python友好的分界面,以适应一时凌乱的WMI脚本API。pywin32库运维正视于相应的MSVC意况,同一时候,python版本须求与MSVC一致。

轻便易行利用

连接

老是当地主机:

import wmi
c = wmi.WMI()

若果是连接别的主机,要求增加该主机名参数:

import wmi
c = wmi.WMI("other_machine")

paramiko

paramiko使用SSH2左券操作远程机器,是Python语言写的四个模块。

查询

wmi模块最遍布的用处正是对系统的音讯举办询问:

import wmi
c = wmi.WMI()
for os in c.Win32_OperatingSystem():
  print os.Caption
'''
输出:
Microsoft Windows 7 旗舰版 
'''

询问磁盘详细音信:

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

import wmi

def toGB(size):
    return str(long(size)/1024**3) + "GB"

def disk():
    c = wmi.WMI ()
    #获取硬盘分区
    for physical_disk in c.Win32_DiskDrive ():
        for partition in physical_disk.associators ("Win32_DiskDriveToDiskPartition"):
            for logical_disk in partition.associators ("Win32_LogicalDiskToPartition"):
                print physical_disk.Caption, partition.Caption, logical_disk.Caption

disks = wmi.WMI ().Win32_LogicalDisk ()

disk()

for d in disks:
    print d.Caption,
        "TotalSize:",toGB(d.Size),
        "FreeSize:",toGB(d.FreeSpace),
        "FreeRate:%0.2f%%"%(100.0 * long (d.FreeSpace) / long (d.Size))

pysmb

pysmb是顾客端SMB
/CIFS合同(SMB1和SMB2)的纯Python达成,它是利于在Windows机器之间开展文件分享和打字与印刷的最底层合同,以及因此Samba服务器应用程序与Linux机器进行文件分享和打字与印刷。

  • 应用pip安装就能够:pip install pysmb
  • 需安装Twisted依赖包: pip install Twisted

Windows下的WMI程序

Windows Management
Instrumentation(WMI)是Windows驱动程序模型的一组增加,提供了八个操作系统界面,通过该分界面,检验组件能够提供消息和通告。WMI允许脚本语言(如VBScript)在该地和远程管理Microsoft
Windows个人计算机和服务器。WMI预安装在Windows Vista,Windows Server
2002,Windows XP,Windows Me和Windows 三千中。

实例

from smb.SMBConnection import *

def send_file(username, password, my_name, remote_name, ip, file_dir, file_dir_remote):
    """
    pysmb下发脚本
    :param username: 远程主机用户名
    :param password: 远程主机密码
    :param my_name: 本地计算机名
    :param remote_name: 远程计算机名
    :param ip: 远程ip
    :param file_dir: 要传输的文件夹本地地址
    :param file_dri_remote: 上传位置相对于c盘的路径
    :return: 
    """
    try:
        # 创建pysmb访问对象
        conn = SMBConnection(username, password, my_name, remote_name)
        # 创建pysmb连接
        conn.connect(ip)
        # 提取文件名或目录正则
        pattern = re.compile(r'.*/(.*)')
        # 读取文件对象
        file_obj = open(file_dir, 'rb')
        # 远程文件名
        file_name = file_dir_remote + pattern.search(file_dir).group(1)
        # 传输文件到远程主机
        conn.storeFile('C$', file_name, file_obj)
        file_obj.close()
    except:
        print('{}远程传输文件失败'.format(ip))
    time.sleep(1)
    call_remote_bat(ip, username, password)
    try:
        conn.deleteFiles('C$', file_name)
    except:
        print('{}远程删除文件失败'.format(ip))
    conn.close()

参照链接

上传文件

import paramiko

t = paramiko.Transport(("主机","端口"))
t.connect(username = "用户名", password = "口令")
sftp = paramiko.SFTPClient.from_transport(t)
remotepath=’/var/log/system.log’
localpath=’/tmp/system.log’
sftp.put(localpath,remotepath)
t.close()

操作远程机器首要行使的有paramiko,WMI(Windows Management
Instrumentation),SMBConnection.

发表评论

电子邮件地址不会被公开。 必填项已用*标注