Grep Wvdial 실행 시 출력

Grep Wvdial 실행 시 출력

grep실행할 때 출력을 원합니다 . 실제로 모뎀이 연결되면 작업을 실행하고 싶습니다.wvdialwvdial

grep가능한 경우 모뎀이 연결되어 있음을 의미하는 문자열 "IP 주소"를 사용하고 다른 작업을 수행하기 위해 다른 쉘 스크립트를 트리거하여 이 작업을 수행하고 싶습니다 .

그게 어떻게 가능하지?

답변1

엄밀히 말하면 답은 하나입니다.

많은 프로그램은 어딘가에 파이프될 때 출력을 버퍼링합니다. 즉, 한 번에 여러 줄을 작성합니다. 이렇게 하면 성능이 향상되지만 grep출력하려는 ​​시도가 당연히 파괴됩니다 . GNU Coreutils에는 stdbuf일반적으로 이 설정을 변경할 수 있는 유틸리티가 포함되어 있습니다 . stdout 또는 stderr을 라인 버퍼링으로 변경하고 싶습니다. 이는 효과가 있을 수 있지만 최선의 해결책은 아닐 수도 있습니다.

더 좋은 방법:

를 보면 pppd가 PPP 링크가 나타날 때 이 스크립트를 실행하는 /etc/ppp것을 포함하여 여러 스크립트가 있다는 것을 알 수 있습니다 . /etc/ppp/ip-up적어도 데비안에서는 스크립트가 실행됩니다 /etc/ppp/ip-up.d/.

따라서 더 간단한 해결책은 /etc/ppp/ip-up.d/쉘 스크립트를 추가하거나 편집하는 것입니다(또는 존재하지 않는 경우 생성하는 것) /etc/ppp/ip-up. 마찬가지로 …ipv6-up, 및 변형이 있습니다 …-down. 그리고 좀 더 확인해 보세요.pppd맨페이지의 "스크립트" 섹션더 알아보기.

up 스크립트를 사용하여 링크가 준비되었음을 스크립트(또는 다른 스크립트)에 알릴 수 있다는 점을 기억하십시오. 해당 작업 자체를 수행할 필요는 없습니다. 예를 들어 간단한 신호를 사용하여 신호를 보낸 kill -USR1 other-script-pid다음 trap&를 사용하여 sleep해당 신호를 기다릴 수 있습니다. 또는 읽기 위해 명명된 파이프(예: "fifo" mkfifo)를 열고(작성기가 있을 때까지 차단됨) up 스크립트를 사용할 수 있습니다 echo alive > /path/to/fifo. 또는 IP 주소나 기타 유용한 정보를 에코합니다. 또는 귀하의 스크립트가 작동 kill -STOP $$하고 up 스크립트도 작동합니다 kill -CONT script-pid. 이를 달성하는 방법에는 여러 가지가 있습니다. (심지어 나가서 dbus를 사용할 수도 있습니다.)

관련 정보