使用shell中的writeline执行密码更改命令时不读取密码

时间:2016-09-06 21:54:41

标签: vba ssh putty plink console.writeline

我有一个代码,使用shell命令打开plink进行SSH连接,我可以通过StdIn.Writeline方法运行除密码更改命令之外的任何命令。如果我运行更改密码命令,则无法通过StdIn.Writeline方法输入密码。该命令类似于set usr pwd。该命令完美执行,并在执行后请求输入当前密码"。这里WriteLine方法无法输入密码。

以下是代码和输出的示例:

Run = filename & " " & strCompAddress & " -P " & strServerPOrt & " -l " & strServerUser & " -pw " & strServerPassword
Set osh = CreateObject("Wscript.Shell")
Set oEx = osh.exec(Run)

oEx.StdIn.WriteLine "command 1" 'This command runs fine'
oEx.StdIn.WriteLine "command 2" 'This command runs fine'
oEx.StdIn.WriteLine "command 3" 'This command runs fine'
oEx.StdIn.WriteLine "set usr wd" 'This command runs fine'
oEx.StdIn.WriteLine "current_pwd" 'This doesn't input the password and it stucks here  
oEx.StdIn.WriteLine "new_pwd"
oEx.StdIn.WriteLine "new_pwd"
oEx.StdIn.WriteLine "exit"

输出类似于许多转义序列命令。

command 1 
command 2
command 3
set usr pwd
current_pwd
new_pwd
new_pwd
exit

Command 1
result
ok

command 2
result 
ok

command 3
result
ok
set usr pwd
Enter Current Password:

1 个答案:

答案 0 :(得分:2)

命令set user password(或其他任何东西)可能只用于从终端读取密码,而不是从标准输入读取密码。这是一种常见的安全功能,可以避免这种自动密码更改。

尝试使用Plink命令行switch -t强制执行交互式/终端模式。

这将使Plink输入重定向到虚拟终端并使命令满意。

确保服务器管理员对您要执行的操作感到满意。