SSH를 통해 원격 장치에 접속하고 패킷 손실 카운터를 가져옵니다.
$ ssh [email protected] cat /proc/net/pf_ring/*eth0* | grep -E "Tot Pkt Lost"
위 명령의 출력:
Tot Pkt Lost : 1083761951
Tot Pkt 누락된 숫자만 추출하는 명령이 필요합니다.
답변1
GNU가 있다면 grep
다음과 같이 할 수 있습니다:
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -oP 'Tot Pkt Lost\s*:\s*\K\d+'
1083761951
하지만 awk
아마도 더 간단하고 이식성이 뛰어난 것이 있을 것입니다.
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
awk '/Tot Pkt Lost/{print $NF}'
1083761951
답변2
이 경우 확장 정규식을 사용하지 않으므로 -E
with를 사용할 필요가 없습니다. grep
원격 시스템 대신 로컬 시스템에서 와일드카드 모드를 확장할 수도 있으며, 이로 인해 잘못된 결과가 발생할 수 있습니다.
따라서 명령을 다음과 같이 다시 작성해야 합니다.
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -F 'Tot Pkt Lost'
여기서는 정규식이 아닌 문자열을 일치시키기 때문에 -F
with를 사용하고 있습니다. grep
또한 와일드카드 패턴이 로컬이 아닌 원격 호스트에서 확장되도록 원격 호스트에서 실행해야 하는 명령을 인용했습니다.
그러면 동일한 출력이 제공됩니다.
Tot Pkt Lost : 1083761951
번호만 얻으려면 다음을 전달하세요 grep -E -o '[[:digit:]]+'
.
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
grep -F 'Tot Pkt Lost' |
grep -E -o '[[:digit:]]+'
또는 다음을 사용하십시오 sed
.
ssh [email protected] 'cat /proc/net/pf_ring/*eth0*' |
sed -n 's/^Tot Pkt Lost.*: //p'
Tot Pkt Lost
이는 각 줄의 시작 부분과 :
그 뒤에 오는 문자열 과 일치합니다 . 일치하는 문자열을 제거하고 나머지 줄을 인쇄합니다. 다른 모든 데이터는 삭제됩니다.