【问题标题】:Password is not read while executing password change command using writeline in shell在 shell 中使用 writeline 执行密码更改命令时未读取密码
【发布时间】: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


【解决方案1】:

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

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

这将使 Plink 输入重定向到虚拟终端,并且可以使您的命令满意。


确保服务器管理员对你正在尝试做的事情感到满意。

【讨论】:

  • 谢谢马丁!终于有人在这里试图就这个问题提供建设性的答案,否则我得到的回答很模糊。不幸的是,开关-t 不起作用。另外关于管理员对我所做的事情感到满意,我是这个实验室的管理员,我正在测试实验室中尝试它:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
相关资源
最近更新 更多