Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 May 2002 18:20:10 +0300
From:      Giorgos Keramidas <keramida@freebsd.org>
To:        freebsd-audit@freebsd.org
Cc:        Brian Somers <brian@freebsd.org>, "Crist J. Clark" <cjc@freebsd.org>, Doug Barton <dougb@freebsd.org>, Gregory Neil Shapiro <gshapiro@freebsd.org>, Robert Watson <rwatson@freebsd.org>
Subject:   Removing perl traces from src/etc/periodic
Message-ID:  <20020529152010.GA13893@hades.hell.gr>

next in thread | raw e-mail | index | archive | help

The following patch removes all traces of perl from etc/periodic.
I have tested this by comparing the output of the current periodic
stuff and the output of the patched version, but I might have missed
something.  Mark Murray has also done a bit of testing.  If there are
no serious problems with this, I would like to get it committed so
that we can move one step closer to having a perl free base system :)

As usual, your comments, complaints or suggestions are most welcome.

What I want you to pay special attention to is the replacement of an
inline Perl script in 470.status-named with a subshell invocation.
I have tested this with a few lines that were created by my locally
running named, but a bit of extra testing won't hurt, I guess.

I'd like to apologize to those of you who are Cc:'ed *and* subscribed
to -audit, as they will receive duplicate copies of this.  You were
the ones responsible for the last 50 commits in src/etc/periodic.
Since you have all been active in this area, ignore the duplicate.
It merely means I didn't want you to miss the post in the rest of the
-audit traffic.

Cheers,

%%%
Index: etc/periodic/daily/440.status-mailq
===================================================================
RCS file: /home/ncvs/src/etc/periodic/daily/440.status-mailq,v
retrieving revision 1.8
diff -u -r1.8 440.status-mailq
--- etc/periodic/daily/440.status-mailq	7 May 2002 13:11:05 -0000	1.8
+++ etc/periodic/daily/440.status-mailq	28 May 2002 20:47:54 -0000
@@ -25,7 +25,7 @@
 	    rc=$(case "$daily_status_mailq_shorten" in
 		[Yy][Ee][Ss])
 		    mailq |
-			perl -ne  'print if /^\s+\S+@/' |
+			egrep -e '^[[:space:]]+[^[:space:]]+@' |
 			sort |
 			uniq -c |
 			sort -nr |
@@ -45,7 +45,7 @@
 		    rc=$(case "$daily_status_mailq_shorten" in
 			[Yy][Ee][Ss])
 			    mailq -Ac |
-				perl -ne  'print if /^\s+\S+@/' |
+				egrep -e '^[[:space:]]+[^[:space:]]+@' |
 				sort |
 				uniq -c |
 				sort -nr |
Index: etc/periodic/daily/460.status-mail-rejects
===================================================================
RCS file: /home/ncvs/src/etc/periodic/daily/460.status-mail-rejects,v
retrieving revision 1.14
diff -u -r1.14 460.status-mail-rejects
--- etc/periodic/daily/460.status-mail-rejects	30 Apr 2002 17:07:32 -0000	1.14
+++ etc/periodic/daily/460.status-mail-rejects	28 May 2002 20:47:54 -0000
@@ -51,8 +51,9 @@
 		done
 		cat /var/log/maillog
 	    } |
-		perl -ne "print \"\$2\n\"
-		    if (/reject=/ and /^$start.*ruleset=check_\S+,\s+arg1=(<[^@]+@)?([^>,]+).*reject=/o);" |
+		fgrep 'reject=' |
+		egrep -e "^$start.*ruleset=check_[^[:space:]]+,[[:space:]]+arg1=(<[^@]+@)?([^>,]+).*reject=.*" |
+		sed -e 's/.*arg1=//' -e 's/.*@//' -e 's/[>[:space:]].*$//' |
 		sort -f | uniq -ic | sort -fnr | tee /dev/stderr | wc -l)
 	    [ $rc -gt 0 ] && rc=1
 	fi;;
Index: etc/periodic/daily/470.status-named
===================================================================
RCS file: /home/ncvs/src/etc/periodic/daily/470.status-named,v
retrieving revision 1.2
diff -u -r1.2 470.status-named
--- etc/periodic/daily/470.status-named	26 Jul 2001 02:37:12 -0000	1.2
+++ etc/periodic/daily/470.status-named	28 May 2002 20:47:54 -0000
@@ -25,30 +25,30 @@
 
 	start=`date -v-1d '+%b %d' | sed 's/0\(.\)$/ \1/'`
 	rc=$(catmsgs |
-	    perl -ne 'print "$2 from $1\n"
-		if (/^'"$start"'.*named\[\d+\]: denied [AI]XFR from \[(.*)\]\.\d+ for "(.*)"/);' |
-	    sort -f | uniq -ic | 
-	    perl -e '
-		use Socket;
+	    fgrep '^'"$start"'.*named\[[[:digit:]]\+\]: denied [AI]XFR from \[.*\]\.[[:digit:]]\+ for' | \
+	    sed -e 's/.*: denied [AI]XFR from \[\(.*\)\]\.[[:digit:]]* for "\(.*\)".*$/\2 from \1/'
+	    sort -f | uniq -ic | (
+		usedns=0
+		if [ X"${daily_status_named_usedns}" != X"" ]; then
+			case $daily_status_named_usedns in
+			[yY][eE][sS])   usedns=1 ;;
+			esac
+		fi
 
-		while (<STDIN>) {
-			if (/^.*from (.*)$/) {
-				$ip_addr = $1;
-				chomp;
-				if ($ARGV[0] =~ /^yes$/i) {
-					($host) = gethostbyaddr(inet_aton($ip_addr), AF_INET);
-				} else {
-					$host = "";
-				}
-
-				if ($host) {
-					print "$_ ($host)\n";
-				} else {
-					print "$_\n";
-				}
-			}
-		}
-	    ' $daily_status_named_usedns | tee /dev/stderr | wc -l)
+		while read line ;do
+			ipaddr=`echo "$line" | sed -e 's/^.*from //'`
+			if [ $usedns -eq 1 ]; then
+				name=`host "${ipaddr}" 2>/dev/null | \
+				   grep 'domain name pointer' | \
+				   sed -e 's/^.* //'`
+			fi
+			if [ X"${name}" != X"" ]; then
+				echo "${line} (${name})"
+			else
+				echo "${line}"
+			fi
+		done ) | \
+		tee /dev/stderr | wc -l)
 	[ $rc -gt 0 ] && rc=1
 	;;
 
Index: etc/periodic/security/550.ipfwlimit
===================================================================
RCS file: /home/ncvs/src/etc/periodic/security/550.ipfwlimit,v
retrieving revision 1.3
diff -u -r1.3 550.ipfwlimit
--- etc/periodic/security/550.ipfwlimit	17 May 2002 11:34:12 -0000	1.3
+++ etc/periodic/security/550.ipfwlimit	28 May 2002 20:57:21 -0000
@@ -45,8 +45,10 @@
     [Yy][Ee][Ss])
 	IPFW_LOG_LIMIT=`sysctl -n net.inet.ip.fw.verbose_limit 2> /dev/null`
 	if [ $? -eq 0 ] && [ "${IPFW_LOG_LIMIT}" -ne 0 ]; then
-	    ipfw -a l | grep " log " | perl -n -e \
-		'/^\d+\s+(\d+)/; print if ($1 >= '$IPFW_LOG_LIMIT')' > ${TMP}
+	    ipfw -a l | grep " log " | \
+	    grep '^[[:digit:]]\+[[:space:]]\+[[:digit:]]\+' | \
+	    awk -v limit="$IPFW_LOG_LIMIT" \
+		'{if ($2 > limit) {print $0}}' > ${TMP}
 	    if [ -s "${TMP}" ]; then
 		rc=1
 		echo ""
Index: etc/periodic/security/650.ip6fwlimit
===================================================================
RCS file: /home/ncvs/src/etc/periodic/security/650.ip6fwlimit,v
retrieving revision 1.3
diff -u -r1.3 650.ip6fwlimit
--- etc/periodic/security/650.ip6fwlimit	17 May 2002 11:34:12 -0000	1.3
+++ etc/periodic/security/650.ip6fwlimit	28 May 2002 20:57:11 -0000
@@ -45,8 +45,10 @@
     [Yy][Ee][Ss])
 	IP6FW_LOG_LIMIT=`sysctl -n net.inet6.ip6.fw.verbose_limit 2> /dev/null`
 	if [ $? -eq 0 ] && [ "${IP6FW_LOG_LIMIT}" -ne 0 ]; then
-	    ip6fw -a l | grep " log " | perl -n -e \
-		'/^\d+\s+(\d+)/; print if ($1 >= '$IP6FW_LOG_LIMIT')' > ${TMP}
+	    ip6fw -a l | grep " log " | \
+	    grep '^[[:digit:]]\+[[:space:]]\+[[:digit:]]\+' | \
+	    awk -v limit="$IPFW_LOG_LIMIT" \
+		'{if ($2 > limit) {print $0}}' > ${TMP}
 	    if [ -s "${TMP}" ]; then
 		rc=1
 		echo ""
%%%

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020529152010.GA13893>