fping – 명령 행 순서로 fping 결과를 항상 순차적으로 만드는 방법


0

fping명령 줄 인수 순서대로 항상 순차적 인 결과를 얻고 싶습니다 .

예를 들어, 다음 명령은

fping -e 151.101.129.164 8.8.8.8

출력을 줄 수 있습니다 :

8.8.8.8 is alive (5.43 ms)
151.101.129.164 is alive (63.2 ms)

위의 결과는 fping명령에 대한 인수와 다른 순서이며 , 여기서 명령 151.101.129.164에 첫 번째가 fping있지만 결과는 두 번째입니다.

151.101.129.164첫 번째 fping 명령의 순서를 변경하지 않고 어떻게 결과를 먼저 표시 할 수 있습니까?

답변:


0

한 가지 방법은 래퍼 스크립트를 작성하는 것입니다.

#!/bin/sh
myfile=$(mktemp)
fping "$@" > "$myfile"
for arg
do
        case "$arg" in
          (-*)  # Ignore options
                ;;
          (*)   grep "^$arg " "$myfile"
        esac
done
rm "$myfile"

따라서 이것을 호출 myfping하고 myfping -e 151.101.129.164 8.8.8.8 ( ./ PATH 앞에 있는 디렉토리에 스크립트 를 추가 하거나 추가 해야하는 ) 실행하면 실행됩니다.

    fping -e 151.101.129.164 8.8.8.8
    출력을 임시 파일로 출력 한 다음 명령 행 (왼쪽에서 오른쪽으로)으로 인수를 진행하고 결과를 순서대로 가져옵니다.

    노트:

    • IPv4 주소 파서는 매우 유연합니다. 전부는 아니지만 대부분의 시스템에서는 127.0.1이와 동등한 것으로 해석 됩니다 127.0.0.1. 그래서, 당신 경우 fping 127.0.1, 그리고 fping시작 출력의 라인을 생산 127.0.1하고, 당신은 또한 같은 인수가 1.7.0.1일치하는 정규 표현식으로 간주됩니다 127.0.1. 다음과 같이이를 극복 할 수 있습니다.

      #!/bin/bash
      myfile=$(mktemp)
      ./fping "$@" > "$myfile"
      for arg
      do
              case "$arg" in
                (-*)  # Ignore options
                      ;;
                (*)   darg=$(sed 's/\./\\./g' <<< "$arg")
                      grep "^$darg " "$myfile"
              esac
      done
      rm "$myfile"
      

      여기서 argof 1.7.0.1는 일치하지 않는 dargof 로 변환됩니다 .1\.7\.0\.1127.0.1

      위의 스크립트는 "여기서 문자열"( <<< "$arg") 때문에 bash 전용 입니다. darg=줄을 다음과 같이 변경하여이 POSIX 호환을 만들 수 있습니다.

      darg=$(printf "%s" "$arg" | sed 's/\./\\./g')
      
    • 위의 붉은 청어 일 수 있습니다. 당신이 경우 fping 127.0.1, 다음 fping 수도 주소를 정상화에 대한 결과를보고 127.0.0.1; 그때는 grep찾지 못했습니다. 아니면 아닐 수도 있습니다. 의 버전을 확인하십시오 fping.
    • 당신이 인수를 같은 어떤 옵션을 사용하는 경우 또는 는 그들이 보통의 인수 것처럼 옵션 인수를 처리합니다 내 스크립트 로직; 즉, 대상 호스트 이름 / 주소입니다. 이것은 중요하지 않을 것입니다.-c count-I interfacecase
    • *, []또는 다른 특수 문자 가 포함 된 인수가 있으면 grep예기치 않은 결과가 발생할 수 있습니다. 실제 생활에서는 문제가되지 않는 것 같습니다.
    • fping대상 호스트 이름 / 주소 인수에 해당하지 않는 정보가 출력 되면 해당 정보가 표시되지 않습니다.
    • 이 스크립트는의 종료 상태로 종료되지 않습니다 fping. 운동으로 남은 고정.
    당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
    Licensed under cc by-sa 3.0 with attribution required.