[Linux] expect를 이용하여 쉘스크립트를 실행시켜 다른 서버 원격 접속하여 명령어 날리기

2022. 11. 30. 16:55·Server/Linux
728x90
반응형

 

#!/bin/sh
USER=root
IP=000.000.000
PW=p@sswOrD

# install expect - important#

expect -c "
spawn ssh -o StrictHostKeyChecking=no $USER@$IP 'example.sh'
expect 'password:'
        send \"$PW\\r\"
expect eof
set timeout 3
"

 

위에서 부터 하나씩 해석을 해보자면,

#!/bin/bash

위 코드는 해당 파일을 bash 쉘로 실행시킨다는 것을 정의하는 것이고.

 

USER, IP, PW 변수로 선언하여 초기화하였다.

 

여기서부터가 중요한대.

expect -c "

 

우리는 expect라는 모듈을 이용할 것이다.

expect 모듈은 커맨드 대화를 상호작용할 수 있도록 도와주는 모듈인데

우리는 비밀번호를 물어보는 질문은 던졌을때 그에 대해 답할 때 쓰이게 된다.

 

spawn ssh -o StrictHostKeyChecking=no $USER@$IP 'example.sh'
expect 'password:'
        send \"$PW\\r\"

ssh -o StrictHostKeyChecking=no $USER@$IP 'example.sh' 이 구문은

ssh -o StrictHostKeyChecking=no $USER@$IP 변수로 선언된 USER와 IP에 해당하는 서버에 접속 한다는 의미이고,

example.sh는 접속하는 원격서버에 파일을 접속하고 바로 실행시킨다는 의미이다. 이 해당 파일을 기입하지 않아도 된다.

 

그리고.. 서버 접속시 비밀번호를 물어보게 된다...

이때! expect를 사용한다.

'password:' 라는 질문이 던져오면 send "$PW" 변수 PW를 답을 줘서 해당 서버에 접속한다.

 

expect eof
"

이렇게 expect가 종료된다.

728x90
반응형

'Server > Linux' 카테고리의 다른 글

[nginx] autoindex로 디렉토리 리스팅 하였을 때 cors 에러  (0) 2023.04.10
[Linux] Shell Script(쉘 스크립트) 프로그램 및 패키지 설치 여부 확인  (0) 2022.12.08
[Linux] 리눅스 타임존(TimeZone, TZ) 한국 표준시(KST)로 변경하기  (0) 2022.11.29
[SSL] Oracle linux server에서 let's encrypt로 nginx에 SSL 적용하기 (인증서 자동 갱신 포함)  (0) 2022.06.14
[linux] nginx 사용시 proxy_pass 연결 안되는 경우 해결법  (0) 2022.03.30
'Server/Linux' 카테고리의 다른 글
  • [nginx] autoindex로 디렉토리 리스팅 하였을 때 cors 에러
  • [Linux] Shell Script(쉘 스크립트) 프로그램 및 패키지 설치 여부 확인
  • [Linux] 리눅스 타임존(TimeZone, TZ) 한국 표준시(KST)로 변경하기
  • [SSL] Oracle linux server에서 let's encrypt로 nginx에 SSL 적용하기 (인증서 자동 갱신 포함)
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (407) N
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (10) N
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    React Compiler
    proxy pass
    프런트엔드
    jsp parameter
    자바 객체 지향
    nginx
    브라우저 자동화
    servlet class
    nginx ssl 설정
    자바 생성자
    클론코딩
    java casting
    자바 배열
    VS Code 팁
    오류
    css table
    Node
    vue 설치
    nginx ssl 적용
    자바 for문
    자바 클래스
    Java Array
    lang rust
    svelte
    gitlab 설치
    css float
    Extension Bisect
    ubuntu
    css transition
    자바 exception
    ssl 인증서 발급
    css perspective
    css list
    러스트
    API 설계
    rust linux
    SSL 인증서
    티스토리 자동화
    vue cli
    vscode
    css block
    Rust lang
    리눅스 설치
    에디터 팁
    spring java
    mysql db
    jsp include
    AI 코딩 에이전트
    css tb
    docker
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
[Linux] expect를 이용하여 쉘스크립트를 실행시켜 다른 서버 원격 접속하여 명령어 날리기
상단으로

티스토리툴바