한 가지 방법은 래퍼 스크립트를 작성하는 것입니다.
#!/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"
여기서 arg
of 1.7.0.1
는 일치하지 않는 darg
of 로 변환됩니다 .1\.7\.0\.1
127.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 interface
case
*
, [
… ]
또는 다른 특수 문자 가 포함 된 인수가 있으면 grep
예기치 않은 결과가 발생할 수 있습니다. 실제 생활에서는 문제가되지 않는 것 같습니다.
fping
대상 호스트 이름 / 주소 인수에 해당하지 않는 정보가 출력 되면 해당 정보가 표시되지 않습니다.
- 이 스크립트는의 종료 상태로 종료되지 않습니다
fping
. 운동으로 남은 고정.