其他分享
首页 > 其他分享> > win7远程执行win10的抓取代码

win7远程执行win10的抓取代码

作者:互联网

win7远程执行win10的抓取代码

一、需求引入

  话说,在公司内网win7虚拟机上部署了一套抓取程序,因为一些原因,需要把公司内网0网段ip段分成两部分:一段走wan1(光猫1),一段走wan2(光猫2),意味着两段ip走的出口是不同的。刚好这台win7虚拟机241走的是wan2出口。

  现在遇到一个问题,有时候抓取程序会报错,就是打不开抓取的网址,开发怀疑是出口ip不好使(类似抓取被禁诸如此类),于是领导想我判断当抓取失败的时候,在另一台机器也就是下面的147,从另一个出口ip重跑一次抓取程序。

 

二、解决

  思路:

(1)路由器限制另一台机器(147)的出口ip,跟抓取程序的原机器(241)出口ip不同;

(2)147部署跟241相同的抓取程序;

(3)当跑241抓取程序页面抓取报错时(py抓取程序的try..except的except里面),利用winrm远程调用147的抓取程序

  对于思路(1),首先交代一下,0网段没有存储空间让我多建一台windows机器了,0网段其他windows机器的定时任务也放的满满的,所以只能从2网段空闲的win10入手了。幸好192.168.0.1的路由器也能对2网段(192.168.2.0/24)的ip进行出口限制,如下图:

(a)分地址池:

(b)配路由策略:

 

   对于思路(2),WinRM可以说是windows的远程管理服务,类似于linux的ssh命令,能远程到计算机上执行相关命令。如何配置使用,可以参考这个文章:https://www.cnblogs.com/yy-cola/p/9637437.html

  刚好两边的windows机器都装有python环境,特意说下被控端,也就是win10,网络配置连接要从“公用”改到“专用”,不然winrm配置的时候会报错

   除了文章上面的命令,我还加了白名单:

C:\Windows\system32>winrm set winrm/config/client @{TrustedHosts="192.168.0.241,192.168.2.147"}    

   最后来个连接测试的脚本

import winrm

win = winrm.Session('http://被控端ip:5985/wsman',auth=('username','userpassword')

#调用系统计算机
#r = win.run_cmd('calc')

#执行python脚本
r = win.run_cmd('python E:\\test\\index.py')

if r.status_code == 0:   #调用成功
    print("调用成功")
else:
    print("调用不成功!")

   还有一个问题,当241抓取程序跑不成功的时候,调用147的python抓取程序重新跑一次,不知道为啥没有打开147的chrome浏览器去跑(其实有没有真正跑成功还真是个谜,但147的代码里我加了一些输出标记倒是都有的),而脚本在241上跑是模拟打开整个浏览器网址访问的,远程调用没了这个窗口,比较奇怪。。。

  

标签:147,程序,ip,winrm,win7,抓取,241,win10
来源: https://www.cnblogs.com/windysai/p/15764444.html