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