【发布时间】:2016-09-06 21:54:41
【问题描述】:
我有一个代码,通过它我可以使用 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"
输出就像有很多转义序列命令。
命令 1 命令 2 命令 3 设置用户密码 当前密码 新密码 新密码 出口 命令 1 结果 行 命令 2 结果 行 命令 3 结果 行 设置用户密码 输入当前密码:
【问题讨论】:
-
这是什么语言?你有 3 个不同的标签。 vb.net vba vbscript.
-
密码提示显然不是从
StdIn读取的。如需进一步帮助,请提供有关远程系统和您正在运行的实际命令的更多信息。 -
Comintern - 是vba @AnsgarWiechers 远程系统是Linux box的修改版,执行此命令后实际命令为“设置用户密码” Enter Current Password: 出现提示后输入密码 显示输入新密码提示并显示重新输入新密码提示
-
@Comintern 使用不安全的 telnet 协议更改密码?你怎么可能推荐这种废话?
-
@MartinPrikryl - 很公平,但仅比通过 VBA(或任何脚本语言)更改 any 密码稍微荒谬一些。无论采用哪种方法,真正的答案是“确保服务器管理员对您正在尝试做的事情感到满意。”
标签: vba ssh putty plink console.writeline