원격 서버에 대한 Ubuntu 로컬 셸 스크립트 ssh 및 명령 실행(인터프리터 필요)

프로젝트 시나리오:

업무를 하다 보면 로컬에서 노드를 제출하고 원격으로 다른 노드에 로그인하여 일부 쉘 명령어를 실행해야 하는 경우가 종종 있는데, 각각의 원격 호스트에 별도로 ssh를 하게 되면 각 명령어를 실행하기가 매우 번거롭습니다. 각 원격 호스트에 직접 ssh를 연결하여 제출 노드에서 명령을 실행할 수 있다면 하나씩 로그인하는 수고를 덜 수 있습니다.

기능을 실현하십시오:

ssh 암호 없는 로그인을 구성해야 합니다. 로그인 암호를 건너뛰고 원격 호스트에 직접 로그인할 수 있습니다. 이는 셸 스크립트에서 실행할 때 매우 중요합니다.

조작 각본:

다음 내용으로 새 셸 스크립트를 만듭니다.
#!/bin/expect

#设置变量
set user "holden"
set host "192.168.0.80"
set loginpass "123456"
set cmd_prompt "]#|~]?"

spawn ssh $user@$host
#设置超时时间,单位是秒
set timeout 30
# -re 匹配正则表达式
expect {
    
    
	-re "Are you sure you want to continue connecting (yes/no)?" {
    
    
		send "yes\r"
		} 
	-re "password:" {
    
    
		send "${loginpass}\r"
		} 
	-re "Permission denied, please try again." {
    
    
		exit
		}

}

###远程命令
expect {
    
     
	-re $cmd_prompt {
    
    
		send "./robosense_sdk.sh\r"
		send "exit \r"
	}

}

interact

달리다:

파일 이름은 start.sh, run입니다.
expect start.sh

추천

출처blog.csdn.net/m0_54792870/article/details/113108695