在成功的OpenVPN连接和VPN'd DHCP协商后,如何更新WinXP客户端的Web代理和默认打印机设置? (以及如何删除VPN断开连接的设置?)
我确信这是一个解决的问题 – 它在概念上与从一个networking到另一个networking的笔记本电脑的非VPN转换自动化没有太大的不同 – 但是我的XP知识是相当浅的,我找不到这样做的食谱。
是的,您可以在OpenVPN连接的客户端或服务器端,Windows或任何其他操作系统上,在连接的各个点上执行任意命令。 有几个选项(可在命令行或configuration文件中使用)定义要执行的脚本以及连接过程各个阶段的参数。
例如,如果您在OpenVPN客户端configuration文件中包含“up”C:\ my-up-script.bat“'行,您的客户端将执行任何批处理脚本位于”C:\ my-up-script“蝙蝠“成功打开到服务器的VPN连接后。 “down”C:\ my-down-script.bat“'表示终止连接后执行脚本”C:\ my-down-script.bat“。
OpenVPN手册(可在http://openvpn.net/index.php/open-source/documentation/manuals/69-openvpn-21.html获得 )列出了所有的各种脚本,并且每一个脚本被执行时:
SCRIPTING AND ENVIRONMENTAL VARIABLES OpenVPN exports a series of environmental variables for use by user-defined scripts. Script Order of Execution --up Executed after TCP/UDP socket bind and TUN/TAP open. --tls-verify Executed when we have a still untrusted remote peer. --ipchange Executed after connection authentication, or remote IP address change. --client-connect Executed in --mode server mode immediately after client authentication. --route-up Executed after connection authentication, either immediately after, or some number of seconds after as defined by the --route-delay option. --client-disconnect Executed in --mode server mode on client instance shutdown. --down Executed after TCP/UDP and TUN/TAP close. --learn-address Executed in --mode server mode whenever an IPv4 address/route or MAC address is added to OpenVPN's internal routing table. --auth-user-pass-verify Executed in --mode server mode on new client connections, when the client is still untrusted.
如果您使用Windows的OpenVPN GUI,您可能还需要阅读该程序的安装指南( http://openvpn.se/install.txt ),特别是标题为“运行连接/断开/预连接脚本”的部分。 OpenVPN GUI使用dynamic定义的命令行选项将OpenVPN守护程序作为Win32服务运行,因此您只需编写自己的脚本并将其保存在服务包装器将要查找的位置。
如果您使用NullSoft NSIS安装程序构build说明( http://openvpn.se/files/howto/openvpn-howto_roll_your_own_installation_package.html )“自行安装”,则可以在创build脚本时将脚本放入包中。 (我不想在这个主题上进一步详细介绍,因为这个问题非常重要,官方文档在这里解释得比我的要好得多。)
如果您不熟悉添加打印机和设置代理configuration所需的Windows脚本命令,则build议您编写几个简短的Visual Basic脚本。 你可以在Google上find更多的例子,但是在Petri论坛( http://www.petri.co.il/forums/showthread.php?t=6486 )发现的东西的启发下,打开一个新的打印机,并将其设置为默认值:
Set WshNetwork = CreateObject("WScript.Network") WshNetwork.RemovePrinterConnection "\\MyGroupName\MyPrinterName" WshNetwork.AddWindowsPrinterConnection "\\MyGroupName\MyPrinterName" WshNetwork.SetDefaultPrinter "\\MyGroupName\MyPrinterName"
将其保存为一个.vbs文件,您应该能够执行它并查看可以看到该打印机的任何机器的更改。 另外,显然,在最后三行的每一行中都必须用自己的名称来replace工作组和打印机名称。
如果您使用OpenVPN GUI的预定义批处理脚本path,则可以通过创build具有正确名称的batch file(如上面链接的文档中所述)来运行.vbs脚本,只包含以下行:
START C:\add_printer.vbs
您也可以直接从OpenVPNconfiguration文件中调用.vbs脚本,方法是添加以下行:
up "C:\add_printer.vbs"
(无论哪种方式,您都需要用实际的.vbs脚本的位置replace该path。)
'down'脚本可以以相同的方式工作 – 可能只需要它包含一行'WshNetwork.RemovePrinterConnection'\ MyGroupName \ MyPrinterName''。