如何使用任务计划程序运行 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任务计划程序运行bat文件?

windows任务计划程序是怎么回事,有啥用途,该怎么设置??

从任务计划程序运行时如何重定向 PowerShell 输出?

如何获取需要在 Synology NAS 的任务计划程序中运行的第 3 方库的 python 脚本?

如何使用 cmd 和日志文件在任务计划程序中调试此计划的 .bat 任务?

如何将我的 c# 程序作为计划任务运行