AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 107551
Accepted
pilcrow
pilcrow
Asked: 2010-01-30 06:42:19 +0800 CST2010-01-30 06:42:19 +0800 CST 2010-01-30 06:42:19 +0800 CST

在 OpenVPN 连接时自动设置代理和默认打印机

  • 772

成功连接 OpenVPN 和 VPN 的 DHCP 协商后,如何更新 WinXP 客户端的 Web 代理和默认打印机设置?(以及如何在 VPN 断开连接时删除这些设置?)

我确信这是一个已解决的问题——它在概念上与为笔记本电脑从一个网络到另一个网络的非 VPN 转换自动化在概念上并没有太大的不同——但我的 XP 知识相当浅,我找不到这样做的秘诀。

printing openvpn windows-xp proxy
  • 1 1 个回答
  • 2542 Views

1 个回答

  • Voted
  1. Best Answer
    Ryan B. Lynch
    2010-02-16T12:43:07+08:002010-02-16T12:43:07+08:00

    是的,您可以在 OpenVPN 连接的客户端或服务器端、Windows 或任何其他操作系统上、在连接的各个点执行任意命令。有几个选项(可在命令行或配置文件中使用)为连接过程的各个阶段定义要执行的脚本以及使用哪些参数。

    例如,如果您在 OpenVPN 客户端配置文件中包含“up "C:\my-up-script.bat"' 行,您的客户端将执行位于 "C:\my-up-script.bat" 的任何批处理脚本。 bat”成功打开与服务器的 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 将 OpenVPN 守护程序作为 Win32 服务运行,具有动态定义的命令行选项,因此您只需编写自己的脚本并将它们保存在服务包装器将查找它们的位置。

    如果您使用 NullSoft NSIS 安装程序构建说明(http://openvpn.se/files/howto/openvpn-howto_roll_your_own_installation_package.html)“自己动手”,则可以在创建时将脚本放入包中。(我不想更详细地讨论这个主题,因为它涉及很多,官方文档比我在这里解释得更好。)

    如果您不熟悉添加打印机和设置代理配置所需的 Windows 脚本命令,我建议您编写几个简短的 Visual Basic 脚本。您可以在 Google 上找到更多示例,但这里有一个初学者,灵感来自我在 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 文件,您应该能够执行它并从任何可以看到打印机的机器上看到更改。此外,很明显,您必须在最后三行中的每一行中用您自己的名称替换工作组和打印机名称。

    如果您使用 OpenVPN GUI 的预定义批处理脚本路径,您可以通过创建一个具有正确名称的批处理文件来运行 .vbs 脚本(如我在上面链接到的文档中所解释的那样),其中仅包含以下行:

    START C:\add_printer.vbs
    

    您也可以直接从您的 OpenVPN 配置文件中调用 .vbs 脚本,方法是添加以下行:

    up "C:\add_printer.vbs"
    

    (无论哪种方式,您都需要将该路径替换为实际 .vbs 脚本的位置。)

    'down' 脚本可以以同样的方式工作——可能你只需要它包含一行,'WshNetwork.RemovePrinterConnection "\MyGroupName\MyPrinterName"'。

    • 1

相关问题

  • 当 RDP 到终端服务器时打印机设置更改

  • Windows 打印环境中基于设备的权限

  • 在 Solaris lp 或 lpr 上打印

  • Brother 打印机错误代码 - HL7050 上的 E58

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve