如何在使用 Plink 执行的 bash 文件中接受用户输入?
How to accept user input in bash file that is executed using Plink?
我有一个简单的 bash 脚本:
echo "Hello!"
read varname
echo "you entered " $varname
因此它输出 "Hello!" 然后接受用户输入并输出输入的文本。
脚本可以使用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
我遇到以下错误:我看到 "Hello!" 输出并且光标在下一行闪烁。但是我不能在那里输入任何字符。控制台根本不会对任何键做出反应,甚至不会对 Enter 做出反应。继续的唯一方法是按 Ctrl+C 关闭连接。
那么,如果使用单行执行脚本,如何解决这个问题并使脚本接受使用 cmd + Plink 的输入?
当您在 Plink command-line 上指定命令时,它会在 non-interactive 会话中执行命令(没有终端仿真)。
使用-t
switch强制使用交互式会话(终端仿真):
plink.exe -batch -t -i C:\path\to\key.ppk user@host bash ./mydir/myscript.sh
我有一个简单的 bash 脚本:
echo "Hello!"
read varname
echo "you entered " $varname
因此它输出 "Hello!" 然后接受用户输入并输出输入的文本。
脚本可以使用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
我遇到以下错误:我看到 "Hello!" 输出并且光标在下一行闪烁。但是我不能在那里输入任何字符。控制台根本不会对任何键做出反应,甚至不会对 Enter 做出反应。继续的唯一方法是按 Ctrl+C 关闭连接。
那么,如果使用单行执行脚本,如何解决这个问题并使脚本接受使用 cmd + Plink 的输入?
当您在 Plink command-line 上指定命令时,它会在 non-interactive 会话中执行命令(没有终端仿真)。
使用-t
switch强制使用交互式会话(终端仿真):
plink.exe -batch -t -i C:\path\to\key.ppk user@host bash ./mydir/myscript.sh