Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何不将此处的文档回显到终端?_Bash_Ssh_Heredoc_Stty - Fatal编程技术网

Bash 如何不将此处的文档回显到终端?

Bash 如何不将此处的文档回显到终端?,bash,ssh,heredoc,stty,Bash,Ssh,Heredoc,Stty,我有一个脚本,提示用户输入sudo密码,然后遍历主机列表并在远程主机上执行命令。我可以“读取-s”以静默方式获取他们的密码,但每次在远程主机上使用他们的密码时,它都会回显到终端。在本地主机上更改stty没有帮助。例如: #!/bin/sh -x echo "Enter sudo pass:" read -s SUDOPASS stty_orig=$(stty -g) stty -echo ssh -tt remote_host sudo cat /etc/cma.conf <<E

我有一个脚本,提示用户输入sudo密码,然后遍历主机列表并在远程主机上执行命令。我可以“读取-s”以静默方式获取他们的密码,但每次在远程主机上使用他们的密码时,它都会回显到终端。在本地主机上更改stty没有帮助。例如:

#!/bin/sh -x

echo "Enter sudo pass:"
read -s SUDOPASS

stty_orig=$(stty -g)
stty -echo
ssh -tt remote_host sudo cat /etc/cma.conf <<EOP
$SUDOPASS
EOP
stty $stty_orig
#/bin/sh-x
echo“输入sudo密码:”
read-s SUDOPASS
stty_orig=$(stty-g)
stty-echo

ssh-tt远程主机sudo cat/etc/cma.confTry
expect

#!/bin/sh

echo "Enter sudo pass:"
read -s SUDOPASS

expect -c 'spawn ssh -tt remote_host sudo cat /etc/cma.conf ; expect -re "\\\[sudo\\\] password for .*:"; send "'"$SUDOPASS"'\n";interact'

老实说,我还没有发现这里的问题。但我经常手动重定向输出以使其静音:

ssh -tt remote_host sudo cat /etc/cma.conf <<EOP >& /dev/null

ssh-tt remote_host sudo cat/etc/cma.conf您应该使用
IFS=read-rs SUDOPASS
以防密码中有空格和反斜杠。错误,不。。。你自己试试看。“-x”就在那里,我可以跟着走。我可以在不启用调试的情况下复制此问题。哦,对不起。。。我看错了。我以为屏幕上没有打印
ssh
密码。问题出在
sudo
password上。更新答案。
#!/bin/sh

echo "Enter sudo pass:"
read -s SUDOPASS

expect -c 'spawn ssh -tt remote_host sudo cat /etc/cma.conf ; expect -re "\\\[sudo\\\] password for .*:"; send "'"$SUDOPASS"'\n";interact'
ssh -tt remote_host sudo cat /etc/cma.conf <<EOP >& /dev/null