셸 스 크 립 트 ssh 원 격 서버 로 이동 하여 명령 실행

1823 단어 셸 스 크 립 트
셸 원 격 실행: 항상 원 격 으로 다른 노드 에 가서 셸 명령 을 실행 해 야 합 니 다. 각각 ssh 를 호스트 에 가서 실행 하 는 것 이 번 거 로 우 므 로 집중 적 으로 관리 할 수 있 었 으 면 좋 겠 습 니 다.셸 명령 을 원 격 으로 실행 하 는 두 가지 방법 을 소개 합 니 다.
전제조건: ssh 비밀번호 로그 인 면제 설정
간단 한 명령:
몇 개의 명령 을 간단하게 수행 하 는 경우:
ssh user@remoteNode "cd /home ; ls"

원 격 노드 에 대한 관 리 를 기본적으로 완성 할 수 있 습 니 다. 몇 가지 주의 점:
작은 따옴표 가 있어 야 합 니 다. 작은 따옴표 가 없 으 면 두 번 째 ls 명령 은 로 컬 에서 실 행 됩 니 다. 동시에 두 명령 사 이 를 따옴표 로 구분 합 니 다.
스 크 립 트 방식:
일부 원 격 으로 실행 되 는 명령 내용 이 비교적 많 고 단일 명령 으로 는 완성 할 수 없 으 며 스 크 립 트 방식 을 고려 하여 이 루어 집 니 다.
#!/bin/bash
ssh user@remoteNode > /dev/null 2>&1 << eeooff
cd /home
touch abcdefg.txt
exit
eeooff
echo done!

원 격 으로 실 행 된 내용 은 "< eeooff"에서 "eeooff"사이 에 있 습 니 다. 원 격 기기 에서 의 조작 은 바로 그 안에 있 습 니 다. 주의 할 점:
<< eeooff, ssh 후 eeooff 와 같은 내용 이 끝 날 때 까지 eeooff 는 다른 형식 으로 마음대로 수정 할 수 있 습 니 다.원 격 출력 을 표시 하지 않 는 것 이 목적 입 니 다.종료 하기 전에 exit 를 추가 하여 원 격 노드 를 종료 합 니 다.
보충:
1. 작은 따옴표 와 작은 따옴표 가 ssh 명령 에서 의 차이 점: 하나의 예 로 문 제 를 설명 한다.
로 컬 기기 에 JAVA 환경 변 수 를 설정 했다 고 가정 하고 로 컬 에서 echo $JAVA 를 실행 합 니 다.HOME=/opt/jdk
원 격 기기 의 JAVA 환경 변 수 를 보고 싶다 면 작은 따옴표 만 사용 할 수 있 습 니 다. ssh user@node'echo $JAVA' 는 '중 $JAVA' 가 셸 에 의 해 해석 되 지 않 고 문자열 로 사 용 됩 니 다. 이때 인자 echo $JAVA 는 ssh 에 전 달 됩 니 다.
하면, 만약, 만약... user@node"echo $JAVA"는 셸 이 먼저 $JAVA 를 분석 하여 값 을 얻 으 면 이 명령 은 ssh 가 됩 니 다. user@node"echo/opt/jdk"입 니 다.
2. 발생 할 수 있 는 문제: 원 격 으로 호스트 에 로그 인 할 때 Pseudo - terminal will not be allocated because stdin is not a terminal 이 발생 합 니 다. 오류 해결 방안: 표준 입력 이 터미널 이 아니 기 때문에 의사 터미널 을 할당 할 수 없습니다.
따라서 표준 입력 이 터미널 이 아니 더 라 도 - t - t 인 자 를 추가 하여 위조 터미널 분 배 를 강제 해 야 합 니 다. to force pseudo - tty allocation even if stdin isn 't a terminal.
참고 사례 는 다음 과 같다.
ssh -t -t user1@host1 -p 9527

 

좋은 웹페이지 즐겨찾기