从Windows终端远程运行Unix脚本并传回提示

时间:2014-07-02 14:22:58

标签: windows ssh remote-access putty plink

我正在使用plink从Windows计算机在远程服务器(Linux)上运行脚本。部分脚本会提示输入(对使用不同凭据的各种其他远程服务器进行身份验证)。我不想将密码存储在脚本中,因为每个用户都会出于审计原因使用自己的密码。

我需要将提示传输到Windows终端窗口,我需要将输入传输回Linux盒子。另外,我需要将所有这些写入文件,如下所示:

plink username@unixbox /etc/scrips/myscript.bash > report.txt

目前上述情况有效,但打印到report.txt的所有内容都是提示

please enter password for reportBox1?
please enter password for reportBox2?

相反,我需要它来发送密码提示并输入到Linux框以继续像往常那样远程运行脚本。所以report.txt的输出会显示为:

please enter password for reportBox1? *
File 1
File 2
File 3
please enter password for reportBox2? *
Data a
data b
data b

希望这是有道理的。如果有一些比plink更好的东西可以使用,例如putty的ssh.exe,请告诉我一个。

1 个答案:

答案 0 :(得分:1)

首先关闭:plink :腻子的ssh.exe

如果您希望能够在Windows计算机上回答密码提示,则需要告诉plink使用-t分配伪终端:

plink -t username@unixbox /etc/scrips/myscript.bash

现在您收到提示,输入将被发回。但是,如果您将STDOUT重定向到report.txt ...

plink -t username@unixbox /etc/scrips/myscript.bash > report.txt

...你不会看到提示,因为它被重定向到report.txt(尽管脚本仍在运行并等待你的输入)。要解决此问题,您需要一些工具,允许您将输出重定向到多个目的地 - STDOUTreport.txt。在* nix世界中,对此的命令是tee。 Windows的端口为tee

设置其中一个,你会做:

plink -t username@unixbox /etc/scrips/myscript.bash | tee report.txt

安全提示:如果Linux机器上的脚本中的密码提示回显输入的内容,那么密码当然也会记录在report.txt中,这可能是个问题。