我有一个代码,使用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:
答案 0 :(得分:2)
命令set user password
(或其他任何东西)可能只用于从终端读取密码,而不是从标准输入读取密码。这是一种常见的安全功能,可以避免这种自动密码更改。
尝试使用Plink命令行switch -t
强制执行交互式/终端模式。
这将使Plink输入重定向到虚拟终端并使命令满意。
确保服务器管理员对您要执行的操作感到满意。