首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么这个命令不接受文件的输入,尽管进行了修改?

为什么这个命令不接受文件的输入,尽管进行了修改?
EN

Stack Overflow用户
提问于 2018-11-22 16:24:06
回答 1查看 133关注 0票数 1

执行时,cisco anyconnect VPN客户端接收来自终端的VPN IP、密码和其他输入。但是,我没有每次输入它,而是在文件中写下值,并尝试将文件重定向到vpn客户端命令。

代码语言:javascript
代码运行次数:0
运行
复制
/opt/cisco/anyconnect/bin/vpn < vpndetails.txt

但是,该命令似乎忽略了文件重定向,仍然提示输入。这怎么可能呢?该代码是否从其他文件描述符(而不是0)读取,并仍然从终端读取它?有可能吗?

注意:我知道把你的密码存储在一个文件里并不是一个好的做法,但我现在并不在意。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-22 18:51:42

“它有可能”这个问题的答案是“是”。

anyconnect vpn的代码可能读取/dev/tty,就像Chepner e.a.As的注释(一个有趣的练习)所解释的那样,尝试以下脚本:

代码语言:javascript
代码运行次数:0
运行
复制
#! /bin/sh 

read -p "STDIN> " a
read -p "TERMINAL> " b  < /dev/tty
read -p "STDIN> " c

echo "Read $a and $c from stdio and $b from the terminal"

例如,ls / | bash this_script.sh

但是,如果希望使用没有密码的Cisco Autoconnect,则应研究“始终保持可信网络检测功能”和“用户证书”。

写信给/dev/tty,希望脚本能把它捡起来,但不起作用:

代码语言:javascript
代码运行次数:0
运行
复制
ljm@verlaine[tmp]$ ls | bash test.sh &
[3] 10558
ljm@verlaine[tmp]$ echo 'plop' > /dev/tty
plop

[3]+  Stopped                 ls | bash test.sh
ljm@verlaine[tmp]$ fg
ls | bash test.sh
(a loose enter is given)
Read a_file and b_file from stdio and  from the terminal
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53434963

复制
相关文章

相似问题

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