如何将Open VPN进程放入SSIS任务控制流程中

时间:2016-03-09 22:39:15

标签: sql-server vba ssis vpn openvpn

我正在学习如何使用SSIS创建自动计划任务。在安全政策发生变化之前,一切都进展顺利。在我想连接数据库之前,我只需在SSIS连接管理器中输入IP地址,用户名和密码。 现在我需要首先打开OpenVPN,这仍然是一个手动过程。所以我真的想把这一点放到SSIS任务流程中。

我在Stackoverflow和其他一些网站上搜索过。这是stackoverflow中的link。这个例子给出了我们可以使用VBA来设置链接的想法。然而,该示例显示我们需要VPN连接名称和VPN用户名,我实际上并不知道在哪里找不到。每次我右键单击.ovpn文件并选择在此配置文件上启动openvpn 。此外,当我打开.ovpn文件时,没有命令指示哪个是我的连接名称或用户名。这是我打开它时的样子(这个文件中没有-auth-user-pass的东西,我可以使用这个文件,而不必指定它):

client
dev tun
proto udp
remote a website here 1111
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3

ca ca.crt
cert office.crt
key office.key
askpass login.txt

是否可以找到我的连接名称和用户名?如果我不需要连接名称和用户名,我还可以编写VBA来建立自动连接过程吗?

我还注意到SSIS中有一个execute process task。是否有可能我可以使用它(因为在我的理解中显然我使用openvpn.exe来执行.ovpn文件)?

如果我说错了,请纠正我,因为我是VPN和SSIS的新手。无论谁能帮助我,我都非常感激。

2 个答案:

答案 0 :(得分:3)

我对OpenVPN一无所知,但一段时间后我遇到了一个类似的问题:服务器坚持使用PuTTY作为唯一允许的连接方法的SSH隧道。

制定这些政策的人从未想过对SSIS的影响,特别是对于无人值守的处理。

我找到的解决方案是:

  1. 找到与PuTTy客户端(称为plink)等效的命令行
  2. 要提供详细的文档,因为这非常困难。
  3. 让SSIS包启动plink.exe,传递各种参数(注意:不要使用Execute Process任务,因为它等待进程退出:在脚本任务中启动进程,并获取plink的句柄.exe的ProcessID)。
  4. 等待之后,让SSIS中的另一个脚本任务连接到plink进程'InputBuffer',输入“密码”。是的,不安全和笨重,虽然您可以加密SSIS项目参数(这显然需要SSIS 2012或更高版本)
    1. SSIS包现在可以连接到服务器并执行数据操作,就好像它是没有愚蠢访问要求的普通服务器一样。
    2. 在程序包结束时,终止plink.exe进程。
  5. 另外,请记住,在无人值守的执行中(例如,当在作业中安排时),您的程序包将在不同的安全上下文中运行,与您工作的程序包一起开发(取决于SSIS服务设置)。如果您对OpenVPN的访问权限依赖于ActiveDirectory,则可能需要为SSIS服务的登录用户设置另一个OpenVPN帐户。

    如果这听起来很可怕,那就是噩梦般的复杂和不稳定,那是因为它是。真的,TL; DR版本是:告诉管理服务器的人,如果他们真的希望你使用SSIS访问它,他们应该制定更合理的访问策略。

答案 1 :(得分:0)

与我的IT同事合作后,我认为我解决了这个问题。以下是我对这个问题的回答和意见,如果我错了,请纠正我。

我认为自动打开VPN是个案问题。在这种情况下,我仍然在SSIS中使用执行流程任务。在任务编辑器中,我们正在执行的不是openVPN.exe,它应该是一个批处理文件。在批处理文件(.bat文件)中,它包含使用OpenVPN.exe打开.ovpn文件的命令

以下流程为您提供更详细的信息。

命令行是我在批处理文件中使用的:

@echo off
CD /D "C:\Program Files\OpenVPN\config"
start openvpn client.ovpn
TIMEOUT /T 10
exit

在SSIS执行流程任务中 enter image description here

希望这很有用