找回密码
 加入
搜索
楼主: ac5474012

[网络通信] 一个脚本双击管用,但是加入启动项中却不会开机启动?

 火.. [复制链接]
 楼主| 发表于 2011-10-24 14:40:30 | 显示全部楼层
现在卡在下载这里,很小的文件会下载很长时间然后报错下载失败。
发表于 2011-10-24 14:51:50 | 显示全部楼层
学习中~~~~~~~
 楼主| 发表于 2011-10-24 15:07:20 | 显示全部楼层
刚才又测试了,还是时间太少了。我更改为20秒就行了,怎样判断ftp什么时间才能使用?
 楼主| 发表于 2011-10-24 15:08:39 | 显示全部楼层
刚才又测试了,还是时间太少了。我更改为20秒就行了,怎样判断ftp什么时间才能使用?
 楼主| 发表于 2011-10-24 17:10:41 | 显示全部楼层
原因是开机后不能马上下载,会爆出错误。现在缺少的是检测什么时间可以下载FTP了什么时间不能。现在用个笨办法先解决了。
#region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=I:\临时\后门\FTP方式后门\实验室1\FTP下载运行.exe|-1
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=n
#endregion ;**** 参数创建于 ACNWrapper_GUI ****
#include <FTPEx.au3>
;~ $server1变量用作FTP服务器地址--------------------------------
Local $server1 = "10.1.56.101"
Local $server2 = "10.1.56.220"
;~ ----------------------------------------------------------
;~ $ip变量用作检测是否连接到网络的指标------------------------------
Local $ip = "10.1.56.100"
;~ ------------------------------------------------------------------
;~ Sleep(10000)
ToolTip("开始网络连接测试", 0, 0)
link()
ToolTip("结束网络连接测试", 0, 0)
Sleep(30000)
Select
        Case ping_($server1) = 1
                ToolTip("开始使用101下载", 0, 0)
                If Ftp($server1, "21", "run", "admin") = 0 Then
                        Sleep(30000)
                        Ftp($server1, "21", "run", "admin")
                EndIf
        Case ping_($server2) = 1
                ToolTip("开始使用220下载", 0, 0)

                If Ftp($server2, "21", "run", "admin") = 0 Then
                        Sleep(30000)
                        Ftp($server2, "21", "run", "admin")
                EndIf
        Case Else
                MsgBox(0, "run网络未发现", "您若看到这条信息请点击确定将其忽略,此信息对用户无意义请勿向网管中心询问。")
EndSelect

Func ping_($server)
;~ 功能:检测PIng是否可用
;~ 用法:ping_(需要检测的IP地址)
        Local $var = Ping($server)
        If $var Then
;~     MsgBox(0,"状态-成功","收发时间间隔:" & $var & "毫秒")
                Return 1
        Else
;~     MsgBox(0,"状态-失败","错误代码:" & @error)
                Return 0
        EndIf
EndFunc   ;==>ping_

Func Ftp($server, $Port, $name, $pass)
;~ 功能:使用FTP协议下载并运行一个文件
;~ 用法:ftp(服务器地址,端口,用户名,密码)
        $Open = _FTP_Open('MyFTP') ;打开一个FTP会话
        $Conn = _FTP_Connect($Open, $server, $name, $pass, 0, $Port) ;连接到ftp服务器
        ToolTip("下载中", 0, 0)
        $ftp_download = _FTP_FileGet($Conn, "\run.exe", @TempDir & "\run.exe", False) ;下载文件(True=覆盖 False=不覆盖(默认))
;~ MsgBox(0,"下载",$Ftp_download)
        $Ftpc = _FTP_Close($Open) ;关闭 _FTP_Open 打开的回话
        Sleep(1000)
        If $ftp_download = 0 Then
                MsgBox(0, "错误", "FTP文件下载失败", 10)
                Return 0
        Else
                Run(@TempDir & "\run.exe")
                Return 1
        EndIf
        
        
EndFunc   ;==>Ftp

Func link()
;~ 功能:检测是否连接到网络
;~ 用法:这是一个关卡,如果连接到网络就会立即通过,如果没有就是大约持续30秒的时间把。
        Local $timer = 0
        Local $valve = 7000
        While $timer <= 100
                If ping_($server1) = 1 Then $timer += 100
                If ping_($server2) = 1 Then $timer += 100
                If ping_($ip) = 1 Then $timer += 100
                $timer += 5
                $valve -= 1000
                If $valve < 1 Then $valve = 1
                Sleep(500 + $valve)
                ToolTip("结束网络连接中阀值为:" & $timer, 0, 0)
        WEnd
EndFunc   ;==>link
发表于 2011-10-24 21:08:36 | 显示全部楼层
回复 20# ac5474012
解决了吗?解决了就好,解决了就结贴吧!
发表于 2011-10-24 22:23:19 | 显示全部楼层
格式1: AutoIt3.exe [/ErrorStdOut] [/AutoIt3ExecuteScript] 文件 [参数 ...]
                执行一个脚本文件
发表于 2011-10-25 04:56:07 | 显示全部楼层
#Include <WinINet.au3>
do
until _WinINet_InternetConnect


试试这个,当有返回时表示ftp已连接,否则返回空
 楼主| 发表于 2011-10-25 16:41:13 | 显示全部楼层
回复 21# xms77

回复  ac5474012
解决了吗?解决了就好,解决了就结贴吧!
xms77 发表于 2011-10-24 21:08


没有真正解决,现在的问题是如何检测出开机后什么时间可以开始FTP下载。因为太早开始下载会造成下载失败。
 楼主| 发表于 2011-10-25 16:42:02 | 显示全部楼层
回复 22# tsui

格式1: AutoIt3.exe [/ErrorStdOut] [/AutoIt3ExecuteScript] 文件 [参数 ...]
                执行一个脚 ...
tsui 发表于 2011-10-24 22:23


哦 谢谢,你的意思是我可以部署脚本文件而非EXE文件吗?这样有什么好处?
 楼主| 发表于 2011-10-25 16:42:36 | 显示全部楼层
回复 23# netegg

#Include
do
until _WinINet_InternetConnect


试试这个,当有返回时表示ftp已连接,否则返回空
netegg 发表于 2011-10-25 04:56


好试试,那个你是蛋蛋吗?
发表于 2011-10-25 16:55:48 | 显示全部楼层
回复 24# ac5474012
延时加长点不行吗?
 楼主| 发表于 2011-10-25 17:03:44 | 显示全部楼层
本帖最后由 ac5474012 于 2011-10-25 17:10 编辑

回复 23# netegg


_WinINet_InternetConnect 能给个使用的例子?

$hInternetOpen - A handle returned by a call to _WinINet_InternetOpen
这句实在是看不懂啊看不懂。
 楼主| 发表于 2011-10-25 17:12:45 | 显示全部楼层
回复 27# xms77

可以啊,但是维护的话又不能时间太长,但是没有超长的时间又很难保证。其实我是想一次向找到一个绝对可行的方法。开机驱动一个网络位置的文件我想这个应该是很多学习AU3的人都需要的吧?
 楼主| 发表于 2011-10-25 17:19:51 | 显示全部楼层
本帖最后由 ac5474012 于 2011-10-25 17:37 编辑

回复 23# netegg
        $r = _WinINet_InternetConnect(0,$INTERNET_SERVICE_FTP,"192.168.7.247",2121,0,"ftp","21")
        MsgBox(0,"",$r)
帮我修正一下吧,我这报0帮我看看是哪里写错了?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 14:50 , Processed in 0.090798 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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