【发布时间】:2019-05-12 18:26:58
【问题描述】:
我有一批包装 AnyConnect 移动客户端 CLI (vpncli.exe) 并要求用户名和密码稍后将它们处理到 vpncli。
简化代码:
set /p user_id=Username:
set /p pwd=Password:
echo %user_id%> c:\temp\configvpn.txt
echo %pwd%>> c:\temp\configvpn.txt
set install_dir="C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client"
%install_dir%\vpncli.exe connect myvpn.mydomain.TLD -s < c:\temp\configvpn.txt
net use h: \\fileserver\sharename /user:domain\%user_id% %pwd%
最后一行是我们这样做的原因:不提示用户密码两次(第一次用于连接 VPN,第二次用于映射网络驱动器)
出于安全原因,我正在改进脚本以不将密码写入磁盘。 我需要一个无文件等效的“
我试过了:
(
@echo %user_id%
@echo %pwd%
) | %install_dir%\vpncli.exe connect myvpn.mydomain.TLD -s
目前还没有成功。输出是这个循环:
>> Please enter your username and password.
Group: VPN-TESTGROUP
Username: [myUsername] Password:
>> Login failed.
Group: VPN-TESTGROUP
Username: [myUsername] Password:
>> Login failed.
(无限重复)
有没有办法做到这一点?
【问题讨论】:
-
你知道你
@echo %pwd%<space>吗? -
将你的命令输出发送到一个文件,即
(echo ...; echo ...) > a.txt然后diff你的configvpn.txt和a.txt看看有什么结果。 -
两个
echos 也可能存在竞争条件(至少在我的测试中是这样)。如果您始终提供用户名而不提供密码,请尝试将timeout /t 1 >nul放在两个命令之间。 -
@Stephan 我不知道。现在已修复,但问题仍然存在。
-
Stephan 和 Mark Setchell 表示管道块内存在
echo的问题,请参阅SO: Windows cmd echo / pipe is adding extra space at the end - how to trim it?
标签: windows batch-file command-line cmd