
저는 inf while 및 for 루프를 사용하여 원격 컴퓨터에서 명령 정보를 가져오는 스크립트를 작성하고 있습니다. PFB 스크립트. 그러나 스크립트는 단일 명령 메시지를 제공함으로써만 종료됩니다. 이 파일에는 여러 명령이 있습니다 (CMDS=$HOMEDIR/cmnd.txt)
. ssh를 사용하지 않으면 모든 명령이 잘 작동하지만 ssh를 사용하면 첫 번째 명령만 실행됩니다.
#!/bin/bash
HOMEDIR=/home/448130
CMDS=$HOMEDIR/cmnd.txt
while read -r line
do
for i in $(cat hostname.txt);
do
echo "***************************** $line output begins ********************************";
#echo $line
ssh $i $line
echo "***************************** $line output ends ********************************";
done
done < $CMDS
이 문제를 해결하도록 도와주세요.
답변1
을 실행하면 ssh
표준 입력이 원격 명령에 전달됩니다. 원격 명령은 실제로 아무 작업도 수행하지 않지만 로컬 ssh
프로세스는 알 방법이 없습니다. 이를 방지하려면 원격 명령에 입력을 전달하고 싶지 않으므로 입력 ssh
을 /dev/null
.
잊지 마요큰따옴표 변수 대체.
IFS=는 -r 라인을 읽는 동안 하다 $(cat 호스트 이름.txt)의 경우; 하다 echo "****************************$ 라인 출력 시작****************** * ****************”; #echo$line SSH "$i" "$line"</dev/빈 echo "**************************** $줄 끝 출력******************** *****************"; 완벽한 완료<"$CMDS"