我有一个脚本要求用户输入。当我在本地运行它时,它会执行我想要的操作,但是我真的很想通过 ssh 运行它。
我尝试过运行脚本的常规方法:
ssh someaccount@somemachine 'mysscript.sh'
ssh someaccount@somemachine 'bash -s' < myscript.sh'
但当它运行时,它不会等待任何用户输入,也不允许您从菜单中进行选择。
#!/bin/bash
# Bash Menu Script Example
echo -n "What machine is sick ?"
read machine
PS3='Please enter your choice: '
options=("Ping $machine" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Ping $machine")
echo "you chose to ping $machine"
ping -c1 $machine
;;
"Option 2")
echo "you chose choice 2"
;;
"Option 3")
echo "you chose choice 3"
;;
"Quit")
break
;;
*) echo invalid option;;
esac
done
谢谢
答案1
要通过命令行运行交互式命令,ssh
您需要告诉ssh
在远程端分配一个 tty。 (通常它不会打扰,并且大多数时候这是一个很好的假设。)添加标志-t
来分配 tty:
ssh -t someaccount@somemachine mysscript.sh
答案2
你必须做 :
root@debian:/home/mohsen# ssh [email protected] "~/test.sh"
[email protected]'s password:
What machine is sick ?192.168.1.4
1) Ping 192.168.1.4 3) Option 3
2) Option 2 4) Quit
Please enter your choice: 1
you chose to ping 192.168.1.4
PING 192.168.1.4 (192.168.1.4) 56(84) bytes of data.
64 bytes from 192.168.1.4: icmp_req=1 ttl=64 time=0.370 ms
--- 192.168.1.4 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.370/0.370/0.370/0.000 ms
Please enter your choice:
远程运行的语法是:
ssh account@remote_machin "command_for_run_on_remote_machine"
上述语法已用于系统管理员的备份。