无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6801|回复: 12
打印 上一主题 下一主题

[已解决] 求一段PECMD检测外网的脚本

[复制链接]
跳转到指定楼层
1#
发表于 2021-10-4 15:07:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yigeren 于 2021-12-31 15:12 编辑

需要一段PECMD代码来检测外网连接的状态,如果检测到有连接外网了就执行A条件,检测不到外网就执行B条件

已搞定,代码如下:

EXEC -err+ !=ping www.baidu.com
IFEX #%error%=0,MESS 有外网连接@连接状态!MESS 无外网连接@连接状态



2#
发表于 2021-10-4 18:06:07 | 只看该作者
LOGS *E:\X.LOG
ENVI$ NL=0d 0a
ENVI  &::SO_REUSEADDR=4     //允许重新监视地址
CALL @WIN1

_SUB WIN1,W494H442,新窗口1,CALL OnQuit,
    SOCK sk   //监听
    SOCK sr   //接收
    SOCK sc   //发送
    EDIT &TOIP,L112T18W86H32,127.0.0.1,,
    EDIT &TOPORT,L212T18W60H30,6002,,
    EDIT &MYIP,L109T178W88H30,0.0.0.0,,
    EDIT &MYPORT,L212T180W58H30,6001,,
    MEMO &RMSG,L57T55W381H94,,,0x40
    MEMO &SMSG,L64T218W366H132,HELLO%NL%,,
    ITEM &ITEM8,L208T368W60H30,发送,CALL OnSend,
    ENVI &&OldMYIP=%&MYIP%
    ENVI &&OldMYPORT=%&MYPORT%
    ENVI &&OldTOIP=
    ENVI &&OldTOPORT=
    ENVI &&bListen=0
    ENVI$ &&BRMSG=*4096 0 //接收缓冲取
    ENVI @this.MSG=#1: CALL OnRecv
    ENVI @this.MSG=#2: CALL OnServer
    //CALL OnServer
    ITEM &BUTLISTEN,L375T182W60H30,监听,CALL OnListen,
    EDIT &MYIP2,L276T181W88H30,,,
    EDIT &TOIP2,L275T20W86H30,,,
    LABE LABE4,L58T19W43H30,对方:,,
    LABE LABE5,L59T178W44H30,本方:,,
_END
_SUB OnRecv
    ENVI @&RMSG=%&RMSG%%&BRMSG%
_END

_SUB OnQuit
    ENVI &bListen=-1
    ENVI @sk.close=
    ENVI @sr.close=
    ENVI @sc.close=
_END

_SUB OnListen
    IFEX $ 0 > %&bListen%, EXIT _SUB  
    FIND $ 0 = %&bListen%, TEAM CALL OnServer| EXIT _SUB
    TEAM ENVI &bListen=0| ENVI @sk.close=| ENVI @sr.close= //连接断开,会自动连上。
    //ENVI @&BUTLISTEN.Enable=0  //禁止
_END
_SUB OnServer
    IFEX $ 0 > %&bListen%, EXIT _SUB  
    ENVI @sk.sock=&&err
    ENVI#$ &&v=1   
    ENVI @sk.setsockopt=&&err;;%&SO_REUSEADDR%,&v  //允许重新监视地址
    ENVI &OldMYIP=%&MYIP%
    ENVI &OldMYPORT=%&MYPORT%
    ENVI @sk.bind=&&err;%&MYIP%;%&MYPORT%
    ENVI @sk.listen=&&err;1
    ENVI @WIN1=%&OldMYPORT%/%&OldMYIP%
    ENVI &bListen=1
    ENVI @&BUTLISTEN=监听中
    THREAD* CALL  Server
_END

_SUB OnCLient
    ENVI @sc.shutdown= //友好关闭
    WAIT 30
//    MESS ---wait 111
    ENVI @sc.sock=&&err
    ENVI @sc.connect=&&err;%&TOIP%;%&TOPORT%
    ENVI &OldTOIP=%&TOIP%
    ENVI &OldTOPORT=%&TOPORT%
_END

_SUB OnSend
    //ENVI  &&bOld=0
    //FIND $%&OldTOIP% = %TOIP%,!!  FIND $%&OldTOPORT% = %TOPORT%,!! ENVI  &&bOld=1
    //FIND $  0 = %bOld%,   CALL  OnCLient
    CALL  OnCLient
    ENVI &&Len=0
    ENVI &&MSG=%&SMSG%
    ENVI @sc.write=&&err;&Len;&MSG
_END

_SUB Server
    LOOP # %&bListen% = 1,
    {
    ENVI &=&bListen=%&bListen%
        ENVI @sk.fd=&&fd
        ENVI &&err=0
        ENVI &&Len=0
        //MESS -- accept
        ENVI @sr.accept=&&err;%&&fd%
        ENVI @sr.getname=;0;&&ip1  //本地实际IP
        ENVI @&MYIP2=%&ip1%  
        ENVI @sr.getname=;1;&&ip2  //对方实际IP
        ENVI @&TOIP2=%&ip2%  
        ENVI &&OK=1
        LOOP $ 11 = %&bListen%%&OK%,
        {
            ENVI &err=0
            ENVI @sr.read=&err;&Len;&BRMSG
            IFEX $ %&Len% > 0,  ENVI @WIN1.SENDMSG=#1 //OnRecv
            IFEX $ %&Len% <= 0, ENVI &OK=0
            WAIT 1
            //MESS --  &Len[ %&Len%]   &bListen[%&bListen%]  &OK[%&OK%] &err[%&err%]
        }
        WAIT 2
    }
    ENVI @&BUTLISTEN=监听
    //MESS  监听结束
    //  IFEX $ %&bListen% = 0,  ENVI @WIN1.SENDMSG=#2 //OnServer
_END


   


点评

赞  发表于 2021-10-6 15:22
高  详情 回复 发表于 2021-10-6 15:22
回复

使用道具 举报

3#
 楼主| 发表于 2021-10-4 19:53:34 | 只看该作者
先谢谢了,不过不是要这效果的,是类似CMD脚本这种简单的
ping www.baidu.com -n 1 | find "TTL"
if errorlevel 0 goto :on
if errorlevel 1 goto :off
PECMD的不懂怎么写

点评

可能不行。第一次链接的延时可能会高,甚至失败。  详情 回复 发表于 2023-12-7 21:54
回复

使用道具 举报

4#
发表于 2021-10-5 06:27:49 | 只看该作者
帮顶
回复

使用道具 举报

5#
发表于 2021-10-5 08:31:36 | 只看该作者
来看看高手的解答!!!!
回复

使用道具 举报

6#
发表于 2021-10-6 15:22:09 | 只看该作者
2012jiashanni 发表于 2021-10-4 18:06
LOGS *E:\X.LOG
ENVI$ NL=0d 0a
ENVI  &::SO_REUSEADDR=4     //允许重新监视地址

回复

使用道具 举报

7#
发表于 2022-4-22 23:09:02 | 只看该作者
  1. SOCK --gethostbyname# &V;www.baidu.com
  2. IFEX #%&V%>0,MESS 有!MESS 无
复制代码

比之前这个好点

点评

zyy
谢谢分享 Win11PE有效  详情 回复 发表于 2023-12-7 21:12
回复

使用道具 举报

8#
发表于 2023-12-7 21:03:52 | 只看该作者
EXEC -err+ !=ping www.baidu.com
IFEX #%error%=0,MESS 有外网连接@连接状态!MESS 无外网连接@连接状态

谢谢分享 Win11PE有效
回复

使用道具 举报

9#
发表于 2023-12-7 21:12:13 | 只看该作者
smss 发表于 2022-4-22 23:09
比之前这个好点

谢谢分享 Win11PE有效
回复

使用道具 举报

10#
发表于 2023-12-7 21:54:11 | 只看该作者
yigeren 发表于 2021-10-4 19:53
先谢谢了,不过不是要这效果的,是类似CMD脚本这种简单的
ping www.baidu.com -n 1 | find "TTL"
if erro ...
  1. ping www.baidu.com -n 1
复制代码
可能不行。第一次链接的延时可能会高,甚至失败。
回复

使用道具 举报

11#
发表于 2023-12-12 09:11:23 | 只看该作者
2012jiashanni 发表于 2021-10-4 18:06
LOGS *E:\X.LOG
ENVI$ NL=0d 0a
ENVI  &::SO_REUSEADDR=4     //允许重新监视地址

真不错,必须点个赞
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-25 23:13

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表