【问题标题】:How to accept user input in bash file that is executed using Plink?如何在使用 Plink 执行的 bash 文件中接受用户输入?
【发布时间】:2019-10-02 23:18:40
【问题描述】:

我有一个简单的 bash 脚本:

echo "Hello!"

read varname

echo "you entered " $varname

所以它输出“你好!”然后接受用户输入并输出输入的文本。

使用 PuTTY 可以成功执行脚本。

我还可以通过 Windows cmd 使用 Plink 运行脚本。我连接到主机:

plink.exe -batch -i C:\path\to\key.ppk user@host

然后我更改目录并运行脚本:

cd mydir

bash myscript.sh

脚本按要求工作:打印“Hello!”然后请求输入并打印输入。

但是,如果我使用 Plink 连接使用相同的字符串运行脚本:

plink.exe -batch -i C:\path\to\key.ppk user@host bash ./mydir/myscript.sh

我得到以下错误功能:我看到“你好!”输出,光标在下一行闪烁。但我不能在那里输入任何字符。控制台根本不会对任何键甚至 Enter 做出反应。唯一的继续方法是按 Ctrl+C 关闭连接。

那么如果脚本使用单行执行,那么如何解决这个问题并让脚本接受使用 cmd + Plink 的输入?

【问题讨论】:

    标签: bash shell ssh cmd plink


    【解决方案1】:

    当您在 Plink 命令行上指定命令时,它会在非交互式会话中执行该命令(无需终端仿真)。

    使用-t switch 强制使用交互式会话(终端仿真):

    plink.exe -batch -t -i C:\path\to\key.ppk user@host bash ./mydir/myscript.sh
    

    【讨论】:

      猜你喜欢
      • 2021-08-01
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多