首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何不将这里的文档回显到终端?

如何不将这里的文档回显到终端?
EN

Stack Overflow用户
提问于 2013-07-02 23:19:00
回答 2查看 612关注 0票数 2

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

代码语言:javascript
运行
复制
#!/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

输出中仍包含密码:

代码语言:javascript
运行
复制
+ ssh -tt remote_host sudo cat /etc/cma.conf
My_P4ssW0rd!
Password:
<?xml version="1.0" encoding="UTF-8"?>
...

在远程主机上使用stty也没有帮助:

代码语言:javascript
运行
复制
stty_orig=$(ssh -t remote_host stty -g)
ssh -t remote_host stty -echo
ssh -tt remote_host sudo cat /etc/cma.conf <<EOP
$SUDOPASS
EOP
ssh -t remote_host stty $stty_orig

FWIW,我主要关注OSX bash/sh

EN

回答 2

Stack Overflow用户

发布于 2013-07-02 23:43:05

试试expect

代码语言:javascript
运行
复制
#!/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'
票数 1
EN

Stack Overflow用户

发布于 2013-07-03 05:45:48

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

代码语言:javascript
运行
复制
ssh -tt remote_host sudo cat /etc/cma.conf <<EOP >& /dev/null

我不确定这是否会有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17429432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档