다음 유형의 셸 스크립트가 있습니다.
#!/bin/bash
ssh [email protected]
echo "Hi"
exit
원격 서버에서 무언가를하기 위해 로컬로 실행합니다 ( 'echo "Hi"'로 표시). 그러나 실행하면 원격 서버에 프롬프트가 표시되므로 'exit'명령이 실행되지 않습니다. 그런 다음 원격 프롬프트에 'exit'를 수동으로 입력하면 "Connection to myremotemachine.com"이 닫힌 다음 "Hi"가 표시됩니다. 올바르게 종료하고 실행 한 (로컬) 프롬프트를 표시하도록 쉘 스크립트를 어떻게 설정할 수 있습니까?
https://unix.stackexchange.com/questions/89747/ssh-exits-after-quit-case-in-bash-script 및 ssh 및 ssh를 통한 셸 : 종료하는 방법? 다소 관련이있는 것 같지만 거기에 제시된 아이디어를 적용 할 수 없었습니다 ./
최신 정보
다음과 같은 최소한의 버전은 Unmatched '.
.
#!/bin/bash
date=`date "+%Y-%m-%d"`
rsync -acxzP --delete --link-dest=/u3/mylogin/backup/old_backup /home/mylogin [email protected]:/u3/mylogin/backup/$date\_backup
ssh [email protected] bash -c "'
rm -f /u3/mylogin/backup/old_backup
ln -s $date\_backup /u3/mylogin/backup/old_backup
exit
'"
나는이 코드에서 따옴표를 제거하면, 내가 얻을 : bash: -c: option requires an argument
및date: Undefined variable.
이것은 당신의 문제를 해결할 것입니다.
ssh [email protected] << HERE
rm -f /u3/mylogin/backup/old_backup
ln -s $date\_backup /u3/mylogin/backup/old_backup
HERE
또는 다음을 수행 할 수 있습니다. 원격 호스트에서 실행하려는 모든 명령을 별도의 스크립트에 넣으십시오. remote.sh와 같은 이름을 지정하십시오.
이제 다음을 실행하십시오.
ssh [email protected] 'bash -s' < /path/to/remote.sh
remote.sh가 포함하는 곳.
rm -f /u3/mylogin/backup/old_backup
ln -s $date\_backup /u3/mylogin/backup/old_backup
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다