여러 서버에서 다음 단계를 수행해야 합니다.
- 내 사용자 이름으로 로그인
- 입력하다
sudo su -
- 입력하다
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 su
is 에 대한 대안이 있지만 sudo -s
내 sudo su -
생각에는 더 많은 것 같습니다.)
두 번째 버전은 일부 조건에서 작동할 수 있습니다. sudo
비밀번호를 요구해서는 안 되며 amCLI
PATH에 있어야 합니다( 를 입력할 때 설정되는 루트 경로가 아니라 sudo su -
sudo가 경로를 사용하기 때문에 경로)에 있어야 합니다. amCLI
등의 전체 경로를 지정해 보십시오 /usr/local/sbin/amCLI
.