我正在使用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
,请告诉我一个。
答案 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
(尽管脚本仍在运行并等待你的输入)。要解决此问题,您需要一些工具,允许您将输出重定向到多个目的地 - STDOUT
和report.txt
。在* nix世界中,对此的命令是tee
。 Windows的端口为tee
:
设置其中一个,你会做:
plink -t username@unixbox /etc/scrips/myscript.bash | tee report.txt
安全提示:如果Linux机器上的脚本中的密码提示回显输入的内容,那么密码当然也会记录在report.txt
中,这可能是个问题。