我正在设置一种解决方案,以从蜂窝路由器捕获信息。在我的脚本中,根据路由器型号,我有一个main.sh
启动其他文件(* .sh)。
因此,如果要捕获有关cisco路由器的信息,请执行main.sh
,而该InformationCisco.sh
正在执行 read -p
or
echo -n then read
。
在最后一个shell文件中,我必须读取一个值,但
./InformationCisco.sh
不起作用。
main.sh
sshpass -p "$MDPssh" ssh -o StrictHostKeyChecking=no admin@"$IPaddress" "cat /proc/net/arp" > "$MACtxt"
testMAC=$(awk 'NR==3{print $4}' $MACtxt | cut -d ' ' -f23)
if [ -z "$testMAC" ]; then
MacAddressPlayer=$(awk 'NR==2{print $4}' $MACtxt | cut -d ' ' -f23)
echo "MAC address Player : $MacAddressPlayer"
else
echo "2 MAC address in ARP"
echo "You have to find the correct MAC address for the player"
cat $MACtxt
read -p "Enter the right MAC address : " MacAddressPlayer
MAC_Choice $typeMAC
echo "MAC address Player : $MacAddressPlayer"
fi
编辑:信息Cisco.sh
df
cluster load_date budget actual fixed_price
0 A 1/1/2014 1000 4000 Y
1 A 2/1/2014 12000 10000 Y
2 A 3/1/2014 36000 2000 Y
3 B 4/1/2014 15000 10000 N
4 B 4/1/2014 12000 11500 N
5 B 4/1/2014 90000 11000 N
6 C 7/1/2014 22000 18000 N
7 C 8/1/2014 30000 28960 N
8 C 9/1/2014 53000 51200 N
我阅读了路由器的ARP表以捕获与其连接的设备。为此,我使用sshpass来输入密码(不用担心密码不清楚,这只是一种简化)。 在另一个正在运行的外壳文件中时,读取功能不会停止。
我应该更改什么,以便读取将等待输入?
答案 0 :(得分:0)
在main.sh中尝试:
source InformationCisco.sh
那样,它将不会在单独的进程中运行脚本(该进程可能未连接到您的会话)。
答案 1 :(得分:0)
在您的上下文中,有可能某个字符\n
已发送到该进程的标准输入,而read -p
可能会立即使用它。