현재 셸 스크립트를 사용하여 mailq 메시지를 삭제하고 있습니다. 쉘 스크립트를 C 코드로 변환하는 데 도움이 필요합니다. 모든 예제 또는 도움을 주시면 감사하겠습니다. 나는 그것을하기위한 기본적인 방향을 원한다. mailq 메시지를 삭제하기위한 C 코드
이 현재 코드 내가 사용하고
:#!/usr/bin/ksh
WORKFILE="/tmp/check.mq"
MAILLIST="emailadress"
mailq|grep -B1 -i temporarily |grep -iv deferred |egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |awk -F" " '{print $1}' |awk '{print substr($0,10,14)}' |tee -a $WORKFILE |awk '{print "*" $1}' |tee -a mail.mq
mailq|grep -B1 -i unknown|egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |awk -F" " '{print $1}' |awk '{print substr($0,10,14)}' |tee -a $WORKFILE |awk '{print "*" $1}' |tee -a mail.mq
mailq|grep -B1 -i lookup |grep -iv deferred |egrep -i 'jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec' |awk -F" " '{print $1}' |awk '{print substr($0,10,14)}' |tee -a $WORKFILE |awk '{print "*" $1}' |tee -a mail.mq
cat mail.mq | while read file; do rm -rf /var/spool/mqueue/$file;done
rm -rf mail.mq
기본적으로 내가 메시지 ID의 마지막 5 개 숫자의 문자열을 사용하여 내 mailid에 그 ID를 삭제하는 것보다 그것을 보낸다.
왜 이것을 C로 변환 하시겠습니까? 그리고 무엇을 시도 했습니까? 어디서 붙어 있니? – Mat
Thanks Mat 문제는 setuid와 관련이 있습니다. 사용자에게 루트 권한을 부여하고 C가 바이너리로 컴파일되기 때문에 C에서 이것을 원합니다. 현재 C 프로그램에서이 스크립트를 호출 해 보았습니다 –
아마도 C로 변환하는 가장 나쁜 이유입니다. 스크립트를 제한된 권한으로 유지하고'sudo'를 사용하십시오. – Mat