【发布时间】:2012-04-27 06:36:37
【问题描述】:
目前我正在使用 shell 脚本来删除 mailq 消息。我需要 sum 帮助将该 shell 脚本转换为 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 问题在于 setuid 我想在 C 中使用这个,因为我想给用户 root 权限,并且因为 C 编译成二进制。目前我尝试从 c 程序调用这个脚本
-
这可能是将某些内容转换为 C 的最糟糕的原因。保留您的脚本,限制权限,并使用
sudo。 -
如果我从 C 调用该脚本并在已编译的二进制文件中使用 chown 设置 setuid,它就可以工作。但我需要 C 中的全部内容。
-
好吧,开始编码吧。当您遇到特定问题时,请在此处提问。