我是Python的新手,我正在尝试创建一个连接到远程Windows机器并在那里执行命令并测试端口连接的脚本.
这是我正在编写的代码,但它不起作用.基本上,我想和它一起返回本地机器数据,而不是远程机器数据.
import wmi import os import subprocess import re import socket,sys def main(): host="remotemachine" username="adminaam" password="passpass!" server =connects(host,username,password) s = socket.socket() s.settimeout(5) print server.run_remote('hostname') class connects: def __init__(self,host,password,s = socket.socket()): self.host=host self.username=username self.password=password self.s=s try: self.connection= wmi.WMI(self.host,user=self.username,password=self.password) self.s.connect(('10.10.10.3',25)) print "Connection established" except: print "Could not connect to machine" def run_remote(self,cmd,async=False,minimized=True): call=subprocess.check_output(cmd,shell=True,stderr=subprocess.STDOUT ) print call main()
您可以使用以下两种方法将一台计算机连接到网络中的另一台计算机:
>使用WMI库.
> Netuse方法.
WMI
以下是使用wmi模块进行连接的示例:
ip = “192.168.1.13” username = “username” password = “password” from socket import * try: print "Establishing connection to %s" %ip connection = wmi.WMI(ip,user=username,password=password) print "Connection established" except wmi.x_wmi: print "Your Username and Password of "+getfqdn(ip)+" are wrong."
netuse
第二种方法是使用netuse模块.
通过Netuse,您可以连接到远程计算机.您可以访问远程计算机的所有数据.可以通过以下两种方式实现:
>通过虚拟连接进行连接.
import win32api import win32net ip = '192.168.1.18' username = 'ram' password = 'ram@123' use_dict={} use_dict['remote']=unicode('\\\\192.168.1.18\C$') use_dict['password']=unicode(password) use_dict['username']=unicode(username) win32net.NetUseAdd(None,2,use_dict)
断开连接:
import win32api import win32net win32net.NetUseDel('\\\\192.168.1.18',win32net.USE_FORCE)
>在本地系统中安装远程计算机驱动器.
import win32api import win32net import win32netcon,win32wnet username=’user’ password=’psw’ try: win32wnet.WNetAddConnection2(win32netcon.RESOURCETYPE_DISK,'Z:','\\\\192.168.1.18\\D$',None,0) print “connection established successfully” except: print “connection not established”
要在本地系统中卸载远程计算机驱动器:
import win32api import win32net import win32netcon,win32wnet win32wnet.WNetCancelConnection2('\\\\192.168.1.4\\D$',1,1)
Before using netuse you should have pywin32 install in your system with python also.
资料来源:Connect remote system.