SSH를 통한 메뉴 스크립트

SSH를 통한 메뉴 스크립트

사용자 입력이 필요한 스크립트가 있습니다. 로컬에서 실행하면 내가 원하는 대로 작동하지만 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

명령줄에서 대화형 명령을 실행하려면 tty가 원격 측에 할당되도록 ssh지시해야 합니다 . ssh(일반적으로 문제가 되지 않으며 대부분의 경우 좋은 가정입니다.) -ttty를 할당하려면 플래그를 추가하세요.

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"

위 구문은 시스템 관리자 백업에 사용되었습니다.

관련 정보