我已经搜索了很多,但需要帮助在客户端连接时运行脚本。最终目标是让 Windows 客户端在连接时映射一些驱动器,并在断开连接时断开驱动器。OpenVPN 服务器是一个 Amazon Marketplace 实例,我可以通过 putty/sftp 访问控制台。客户端能够成功使用 2 Factor Auth 连接并获取正确的 IP/路由。
我尝试将一些脚本放入组权限>客户端脚本中,如下所示:
脚本up.sh如下所示。
net use Z: "\\server.domain.com\Share" /user:domain\username P@ssw0rd
文件 up.sh 包含:
-rwxrwxrwx 1 root root 70 Jan 23 15:45 up.sh
/etc/openvpn 上的目录权限为:
drwxr-xr-x 2 root root 4096 Jan 23 15:45 openvpn
因此,作为测试,我希望在客户端上的客户端日志中看到一些内容:
c:\program 文件(x86)\OpenVPN Technologies\OpenVPN Client\etc\log\capi.log
当客户端连接时会出现以下弹出消息:
单击“是”后,什么也没有发生,并且客户端日志包含以下内容:
2018-01-23 15:58:14-0800 [-] user_connect-PP ERR: "'--script-security' is not recognized as an internal or external command,\r"
2018-01-23 15:58:14-0800 [-] user_connect-PP ERR: 'operable program or batch file.\r'
2018-01-23 15:58:14-0800 [-] user_connect-PP ERR: "'--client-connect' is not recognized as an internal or external command,\r"
2018-01-23 15:58:14-0800 [-] user_connect-PP ERR: 'operable program or batch file.\r'
如果我删除每个脚本行前面的两个破折号(--),则日志中的客户端错误就没有区别了。
谢谢大家的意见!
答案1
Windows 上 OpenVPN 的默认脚本解释器是 cmd.exe。修改客户端脚本以仅包含net use Z: "\\server.domain.com\Share" /user:domain\username "P@ssw0rd"
或其他适合 cmd 的命令,这样就可以了。
@JasonC 还发现密码需要加引号。
编辑:如果您希望最终用户输入密码,请改用以下命令:
powershell New-PSDrive -Name "Z" -PSProvider "FileSystem" -Root "\\Server\Share" -Persist -Credential (Get-Credential)