如何使用任务计划程序运行 Cisco AnyConnect
Posted
技术标签:
【中文标题】如何使用任务计划程序运行 Cisco AnyConnect【英文标题】:How Run Cisco AnyConnect with Task Scheduler 【发布时间】:2015-12-06 18:06:55 【问题描述】:我想每晚运行一个脚本:
-
启动 ***
执行 SQL 查询
断开 ***
目前我有一个用于 1-3 的脚本,但在将它们安排为任务时遇到了问题。
当我手动运行它们时,每个脚本都能正常工作。
当我安排任务并设置仅在用户登录时运行时也可以使用,然后手动运行它
但是当我选择运行时,无论用户是否登录,什么都没有发生。 *** 永远不会连接,所以 sql 无法运行,等等。
我对在任务管理器中引用每个脚本的方式进行了各种更改(exp 使用“s,在 Program/Script 中使用完整路径与使用 Start In),但似乎没有任何效果。
有谁知道是什么阻止了任务运行?
以下是一些屏幕截图和代码:
我开始认为 *** 客户端在我未登录时阻止自己运行。
我还编写了 AutoIt 脚本,它在我登录时可以工作,但在我不登录时就不能工作。
#include <Constants.au3>
;~close any existing ***
Close***()
;~start cmd
Run("C:\WINDOWS\system32\cmd.exe")
WinWaitActive("C:\WINDOWS\system32\cmd.exe")
;~start ***
send('"C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\***cli.exe"' & "ENTER")
Sleep(5000)
;~disconnect ***
send("disconnect" & "ENTER")
;~send connect commands
send("connect ***ADDRESS" & "ENTER")
Sleep(2000)
send("USERNAME" & "ENTER")
Sleep(2000)
send("PASSWORD" & "ENTER")
Sleep(2000)
;~run and wait for sql command
RunSQL();
;~disconnect ***
send("disconnect" & "ENTER")
Close***()
;~close all cmd processes
Local $process4 = ProcessList("cmd.exe")
For $i = 1 To $process4[0][0]
ProcessClose($process4[$i][1])
Next
;~close cmd window
ProcessClose("C:\WINDOWS\system32\cmd.exe")
WinClose("C:\WINDOWS\system32\cmd.exe")
;~-------------------------------------
;~close *** function
Func Close***()
Local $process1 = ProcessList("***cli.exe")
For $i = 1 To $process1[0][0]
ProcessClose($process1[$i][1])
Next
Local $process2 = ProcessList("***ui.exe")
For $i = 1 To $process2[0][0]
ProcessClose($process2[$i][1])
Next
;~ Local $process3 = ProcessList("***agent.exe")
;~ For $i = 1 To $process3[0][0]
;~ ProcessClose($process3[$i][1])
;~ Next
EndFunc
;~-------------------------------------
;~run SQL function
Func RunSQL()
;~start cmd
Local $iPID = Run("C:\WINDOWS\system32\cmd.exe")
WinWaitActive("C:\WINDOWS\system32\cmd.exe")
Send('sqlcmd -Q "EXEC sp_Merge" -S mysqlSERVER -d MYDATABASE -o "C:\MergeScripts\sql_log.txt"' & "ENTER")
Send("exit" & "ENTER")
ProcessWaitClose($iPID)
EndFunc
【问题讨论】:
Run a batch file with Windows task scheduler的可能重复 您是否尝试从首先需要设置 WiFi 连接的笔记本电脑进行连接?因为这不是默认完成的.. 没有。这是来自具有静态 IP 的服务器。 我已经尝试了所有建议 使用 Windows 任务调度程序运行批处理文件 也许 AnyConnect 需要将数据存储在您的用户帐户的%APPDATA%
目录的子目录中或在 HKCU
下的 Windows 注册表中,在未登录的情况下按计划任务运行时不可用在。我建议使用免费的Process Monitor 记录所有注册表和文件系统访问,同时从登录帐户运行脚本。也许您可以看到注册表中的哪些数据以及 AnyConnect 访问了哪些文件,这些可能在未登录的情况下运行脚本时不可用。
【参考方案1】:
http://www.cisco.com/c/en/us/td/docs/security/***_client/anyconnect/anyconnect30/release/notes/anyconnect30rn.html Ctrl+F 并输入“Open Caveats in Release 3.0.5080”
看起来该版本的 AnyConnect 存在很多问题,这些问题都取决于很多事情。我建议更新到最新版本。如果该版本有适用于您的错误,请等到发布修复它的版本。在那之前,你无能为力。
【讨论】:
以上是关于如何使用任务计划程序运行 Cisco AnyConnect的主要内容,如果未能解决你的问题,请参考以下文章
windows任务计划程序是怎么回事,有啥用途,该怎么设置??
从任务计划程序运行时如何重定向 PowerShell 输出?
如何获取需要在 Synology NAS 的任务计划程序中运行的第 3 方库的 python 脚本?