du depends heavily on stat - which is POSIX. So writing C code is failry portable,
along with the dirent.h functions
perl implements stat, so that's cake. The other needed calls: closedir, opendir, and readdir to get file names to stat. Both of those are in perl as well.... go for it.
Perl by Example has an example getting all the file names in a directory.
This does something else with stat data as entry-level example code for the forums here, but you can clean it up for your use:
Code:
#!/usr/bin/perl
use strict;
sub numeric;
sub to_date;
my @filelist = ();
my @sortarray = ();
my $idx = 0;
my $value = "";
my $file = "";
opendir(DIR, "..") || die "can't open $!\n";
@filelist = readdir(DIR);
closedir(DIR);
$idx = 0;
@sortarray = ();
foreach $file ( @filelist )
{
$sortarray[$idx] = sprintf("%d %s", (stat "../$file")[9], $file);
$idx++;
}
@filelist = sort numeric @sortarray ;
print "@filelist\n";
foreach $value ( @filelist )
{
print &to_date( $value );
}
sub numeric { my @one = split(' ', $a);
my @two = split(' ', $b);
return $one[0] <=> $two[0];
}
sub to_date {
my @months = ();
my $filename = "";
my $mtime = 0;
my $sec = 0;
my $min = 0;
my $hr = 0;
my $mday = 0;
my $mon = 0;
my $yr = 0;
my $wday = 0;
my $yday = 0;
my $dntcare =0;
my $retval = "";
@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
($mtime, $filename) = split(' ', $_[0]);
($sec, $min, $hr, $mday, $mon, $yr, $wday, $yday, $dntcare) =
localtime($mtime);
$retval = sprintf( "%-10s %3s %02d %4d %02d:%02d:%02d\n",
$filename, $months[$mon], $mday, $yr + 1900, $hr, $min, $sec );
return $retval;
}
hi i am struggling with mailx command,
my command is
mailx -a attachment.txt -s "hi this is subject " my_name@domain.com
(Interrupt -- one more to kill letter)
the control doesn't comes out automatically, i have to press CTRL + C .. why is it happening so ? (1 Reply)
i=1
while
do
mm=02
dd=03
yy=2008
echo "$mm$dd$yy"
i=$(( i+1))
echo "$i"
done
whenever i execute the script above i will get the error below:
syntax error at line 30: `i=$' unexpected (3 Replies)
Hi... I want to know whether if there is any alternative for cron.:confused:
I had written a script which checks for all system/application processes every 15 min(placed in cron though). But looks funny - what if cron daemon isn't running!! and expecting that script to update the OUTPUT FILE... (5 Replies)
Hello to all board members!!
I have a problem on a HP-UX system. I should write a script. Therefore I need to search after IP addresses in the output of a command.
On Debian this works: ifconfig | egrep -o "{1,3}\.{1,3}\.{1,3}\.{1,3}"
The script where i need this is not ifconfig, but... (2 Replies)
Hi techies ..
This is my first posting hr ..
Am facing a serious performance problem in counting the number of lines in the file. The input files i get will be in some 10 to 15 Gb of size or even sometimes more ..and I will load it to db
I have used wc -l to confirm whether the loader... (14 Replies)
Is there any other editor, installed by 'default' in Sparc Solaris10, besides vi?
I'd like to avoid installing anything new.
If not, how to make vi more user-friendly?
thanks. (8 Replies)
I've created quite a collection of tcl scripts which have buttons, radio buttons, check boxes, text fields, etc. These tcl scripts in turn call and execute several hundred sh, csh, bash, perl scripts and pass in the args based on the gui selections on the same and other redhat machines. We're... (4 Replies)
Greetings.
I've been wondering about this one for some time: Is there an alternative to sleep in bash?
The reason: I'd like to simply limit the amount of processor usage in continuous while : script scenarios without spawning endless sleep processes as well. After beating the manpages, I... (14 Replies)
I am working on converting shell to Perl script. In shell we have built in function
trap
Do you know alternative in Perl or actually we don't need it?
Thanks for contribution (3 Replies)
Hello
im working on "remover script" which try to remove "kthrotlds MINER VIRUS"
in next part of my remover script i have to work on files that it destroyed,
virus use chattr to open and lock files and replace them with malicious content
im looking for a solution to remove chattr and disable... (9 Replies)
Discussion started by: nimafire
9 Replies
LEARN ABOUT REDHAT
smrsh
SMRSH(8) System Manager's Manual SMRSH(8)NAME
smrsh - restricted shell for sendmail
SYNOPSIS
smrsh -c command
DESCRIPTION
The smrsh program is intended as a replacement for sh for use in the ``prog'' mailer in sendmail(8) configuration files. It sharply limits
the commands that can be run using the ``|program'' syntax of sendmail in order to improve the over all security of your system. Briefly,
even if a ``bad guy'' can get sendmail to run a program without going through an alias or forward file, smrsh limits the set of programs
that he or she can execute.
Briefly, smrsh limits programs to be in a single directory, by default /etc/smrsh, allowing the system administrator to choose the set of
acceptable commands, and to the shell builtin commands ``exec'', ``exit'', and ``echo''. It also rejects any commands with the characters
``', `<', `>', `;', `$', `(', `)', `
' (carriage return), or `
' (newline) on the command line to prevent ``end run'' attacks. It allows
``||'' and ``&&'' to enable commands like: ``"|exec /usr/local/bin/procmail -f- /etc/procmailrcs/user || exit 75"''
Initial pathnames on programs are stripped, so forwarding to ``/usr/ucb/vacation'', ``/usr/bin/vacation'', ``/home/server/mydir/bin/vaca-
tion'', and ``vacation'' all actually forward to ``/etc/smrsh/vacation''.
System administrators should be conservative about populating the /etc/smrsh directory. Reasonable additions are vacation(1), procmail(1),
and the like. No matter how brow-beaten you may be, never include any shell or shell-like program (such as perl(1)) in the /etc/smrsh
directory. Note that this does not restrict the use of shell or perl scripts in the sm.bin directory (using the ``#!'' syntax); it simply
disallows execution of arbitrary programs.
FILES
/etc/smrsh - directory for restricted programs
SEE ALSO sendmail(8)
$Date: 2002/04/25 13:33:40 $ SMRSH(8)