grep을 사용하여 ping 명령의 ttl을 운영 체제와 연관시키십시오.

grep을 사용하여 ping 명령의 ttl을 운영 체제와 연관시키십시오.

현재 저는 스크립트를 작성 중이며 네트워크의 장치에 ping을 보내고 연결 가능한지 확인한 다음 ping에서 ttl 데이터를 가져와 운영 체제에 알려주는 내용을 작성 중입니다.

나는 grep 명령이 어떻게 작동하는지 완전히 알지 못하지만 지금까지 얻은 내용은 다음과 같습니다.

for host in $(seq 1 255);
do

ping -c 1 $sn.$host | grep "Unreachable" &>/dev/null

if [ $? -eq 0 ]; then
    printf "%s\n" "$sn.$host is Offline"
fi

ping -c 1 $sn.$host | grep "ttl" &>/dev/null

if [ $? -eq 0 ]; then
    printf "%s\n" "$sn.$host is Online"
fi

done

Linux의 TTL이 64이고 Windows의 TTL이 128이고 iOS의 TTL이 255라는 것을 알고 있으면 "$host online. OS: Linux"와 같은 결과를 출력하도록 이 스크립트를 어떻게 수정할 수 있습니까?

"ping -c 1 $sn.$host | grep "ttl"" 행을 세 번 복사하고 ttl 값을 추가한 다음 if 문을 생성하여 원하는 내용을 인쇄할 수 있다는 것을 알고 있지만 한 번에 가져오고 싶습니다. 실행 중에 핑이 완료되면 가능하면 이동하세요.

답변1

ping다음과 같이 수정하여 ttl을 얻을 수 있습니다.

ttl=$( ping -c 1 turing | grep ttl | sed 's/.*ttl=\([[:digit:]]*\).*/\1/' )

이후 입력된 값을 직접 확인 ttl하고 필요한 정보를 인쇄할 수 있습니다.

관련 정보