쉘 스크립트 - 서버 목록에서 폴더를 ping하고 생성합니다.

쉘 스크립트 - 서버 목록에서 폴더를 ping하고 생성합니다.

서버 목록에 ping을 보내는 스크립트를 만들려고 하는데 결과를 텍스트 파일에 기록한 다음 서버 목록에 폴더를 만듭니다.

FILENAME="hosts"

while IFS='' read -r LINE || [[ -n "$LINE" ]]; do    
ping -c 3 $LINE >>/home/user/scripts/results.txt
sshpass -p 'P@ssword' ssh$LINE 'cd/home/user/Desktop;mkdir test'
echo
done < "/home/user/scripts/servers.txt"

핑은 제대로 작동하지만 폴더를 생성하는 명령을 추가하면 첫 번째 서버 핑 결과만 나타나고 첫 번째 서버에 폴더가 생성됩니다.

어떤 아이디어가 있나요?

답변1

ssh표준 입력을 읽습니다. 이는 루프의 표준 입력을 상속합니다 while. 이는 파일의 나머지 줄을 모두 먹어치운다는 의미입니다.

ssh -n이 문제는 로 리디렉션 되는 표준 입력을 사용하여 /dev/null쉽게 해결할 수 있습니다 ssh.

#!/bin/sh

while IFS= read -r addr || [ -n "$addr" ]; do    
    ping -c 3 "$addr" 
    sshpass -p 'P@ssword' ssh -n "$addr" 'mkdir Desktop/test'
    echo
done < "$HOME/scripts/servers.txt" >"$HOME/scripts/results.txt"

관련 정보