스크립트 SSH 서버에 sudo 명령 사용

스크립트 SSH 서버에 sudo 명령 사용

여러 서버에서 다음 단계를 수행해야 합니다.

  1. 내 사용자 이름으로 로그인
  2. 입력하다sudo su -
  3. 입력하다amCLI -l 32/1 | grep Firmware

그래서 저는 이 모든 것을 하나의 스크립트로 작성하고 싶습니다. 제 생각은 다음과 같습니다.

#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo su-; amCLI -l 32/1 | grep Firmware"
done

또는

#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo amCLI -l 32/1 | grep Firmware"
done

하지만 둘 다 작동하지 않습니다.

답변1

/full/path/to/amCLI더 나은 해결책은 사용자가 비밀번호를 제공하지 않고도 실행할 수 있도록 sudo를 설정하는 것입니다 .

그렇다면 간단하게 할 수 있습니다

#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
    ssh -n vneudeck@$hostname sudo /full/path/to/amCLI -l 32/1 | grep Firmware
done

답변2

아마도 vneudeck@$hostname을 큰따옴표로 묶어두면 도움이 될 것입니다. 그리고 su와 - 사이에는 공백이 없습니다. 도움이 되었기를 바랍니다.

답변3

첫 번째는 작동하지 않습니다.

sudo su -; amCLI -l 32/1 | grep Firmware

이는 를 실행 sudo su -하고 이것이 반환되면(즉, 루트로 명령 처리를 마치고 종료한 경우) amCLI를 실행합니다. (또한 sudo suis 에 대한 대안이 있지만 sudo -ssudo su -생각에는 더 많은 것 같습니다.)

두 번째 버전은 일부 조건에서 작동할 수 있습니다. sudo비밀번호를 요구해서는 안 되며 amCLIPATH에 있어야 합니다( 를 입력할 때 설정되는 루트 경로가 아니라 sudo su -sudo가 경로를 사용하기 때문에 경로)에 있어야 합니다. amCLI등의 전체 경로를 지정해 보십시오 /usr/local/sbin/amCLI.

관련 정보