执行时,cisco anyconnect VPN客户端接收来自终端的VPN IP、密码和其他输入。但是,我没有每次输入它,而是在文件中写下值,并尝试将文件重定向到vpn客户端命令。
/opt/cisco/anyconnect/bin/vpn < vpndetails.txt
但是,该命令似乎忽略了文件重定向,仍然提示输入。这怎么可能呢?该代码是否从其他文件描述符(而不是0)读取,并仍然从终端读取它?有可能吗?
注意:我知道把你的密码存储在一个文件里并不是一个好的做法,但我现在并不在意。
发布于 2018-11-22 18:51:42
“它有可能”这个问题的答案是“是”。
anyconnect vpn的代码可能读取/dev/tty,就像Chepner e.a.As的注释(一个有趣的练习)所解释的那样,尝试以下脚本:
#! /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
,希望脚本能把它捡起来,但不起作用:
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
https://stackoverflow.com/questions/53434963
复制相似问题