새 Linux 서버가 네트워크를 통해 다중 사용자 모드로 부팅될 때 먼저 실행되는 부팅 셸 스크립트가 있습니다.
완료되면 현재 udp/tcp 포트 514를 사용하여 syslog-ng를 실행하고 있는 중앙 로그 호스트 서버와 포트 80에서 웹 서버를 실행 중인 중앙 로그 호스트 서버에 오류 상태를 보고하려고 합니다. 따라서 php/perl을 사용하여 http 형식의 정보를 수신할 수 있습니다. ..)
그러나 고객이 빌드를 지정하고 구성 파일을 변경하고 싶지 않기 때문에 패키지를 설치할 수 없습니다. 따라서 syslog는 원시 파일이므로 wget/curl이 설치되지 않을 수 있습니다.
나도 비슷한 일을 하고 싶었습니다.
exec 3<>/dev/tcp/www.google.com/80
echo -e “GET / HTTP/1.1\nhost: http://loghost.local/message\n\n” >&3
하지만 데비안 컴퓨터에서는 이러한 장치가 비활성화되어 있는 것으로 나타났습니다.
분명히 다음과 같은 다양한 옵션을 계단식으로 배열할 수 있습니다.
if [ -x wget ]; then
echo "using wget to post message"
elif [ -x curl ]; then
echo "using curl to post message"
elif [ ]; then
exec 3<>/dev/tcp/loghost.local/80
echo -e “GET / HTTP/1.1\nhost: http://loghost.local/message\n\n” >&3
else
echo nc ## some netcat command so send stuff to udp 514...
fi
로거는 로컬 및 소켓 연결만 지원하는 것으로 보이며 데비안 제한 사항이 적용될 수 있습니다.
서비스에서 많은 것을 구성할 수 있기 때문에 옵션이 많은 것 같습니다. 이런 것 하나아주 멍청한 생각특정 도메인에 대해 누락된 레코드를 캐시하도록 로컬 이름 서버를 구성하고 부트스트랩 스크립트가 다음과 같이 실행되도록 하는 것입니다.
getent hosts logmessage.sourceserver.mydomain.com
아마도 지정된 로그 파일에서 상태를 구문 분석할 수 있을 것입니다... ;-)
분명히 netcat이 설치되어 있으면 옵션이지만 일부 서버 빌드에서는 매우 유연하기 때문에 netcat과 같은 항목을 적극적으로 제거합니다.
어쨌든, 이 질문은 syslog.conf 파일을 일시적으로 교환할 수 있기 때문에 실용적인 목적보다는 정보 제공에 더 가깝습니다. 하지만 서버 제거를 건드리지 않고 이 작업을 수행하는 것도 흥미로울 것입니다...