zoukankan      html  css  js  c++  java
  • 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上跑是模拟打开整个浏览器网址访问的,远程调用没了这个窗口,比较奇怪。。。

      

  • 相关阅读:
    【转载】使用Jquery操作Cookie对象
    PHP实现双向链表、栈
    Mysql触发器、模糊查找、存储过程、内置函数
    List、Set、Map、数组之间各种转换
    Android -- 压缩与解压文件
    Android -- 动态添加布局
    Android -- Service绑定解绑和aidl
    Android -- 图像处理(信息量超大)
    Android -- 利用Broadcast开启Service
    Android -- Service的开启关闭与生命周期
  • 原文地址:https://www.cnblogs.com/windysai/p/15764444.html
Copyright © 2011-2022 走看看