dccmessage: 192.168.0.1 [irc hostname] dccmessage: PRIVMSG dccmessage: crawler dccmessage: :DCC dccmessage: SEND dccmessage: .profile [dynamisch aufgrund der spaces] dccmessage: 3232235521 [long integer ip] dccmessage: 1482 [vorletzter wert] dccmessage: 202 [letzter wert]
{{{@dccmessages[0] ==> ip @dccmessages[5] ==> filename @dccmessages[7] ==> port @dccmessages[8] ==> size}}}
sub on_dcc {
# &on_dcc($dccip,@dccmessages[5],@dccmessages[7],@dccmessages[8]);
my ($dccserver, $dccfilename, $dccport, $dccsize) = @_;
# $MySocket=new IO::Socket::INET->new(PeerPort=>$dccport,Proto=>'tcp',PeerAddr=>$dccserver);
# $MySocket->recv($binary,1024);
# open (TEST, ">>/tmp/$dccfilename") or do { warn "Can't open test file: $!"; return; };
# $end=0;
# while($end!=-1){
# print TEST $binary;
# $MySocket->recv($binary,1024); #one week ago I read that it's bad putting system calls into loops well here it is ;)
# if($binary eq ""){
# $end=-1;
# }
# }
# print"transmission finished";
socket(DCCSH,PF_INET, SOCK_STREAM, getprotobyname('tcp')) || die $!;
my $sin1 = sockaddr_in($dccport,inet_aton($dccserver));
open (TEST, ">>/tmp/$dccfilename") or do { warn "Can't open test file: $!"; return; };
connect(DCCSH,$sin1) ;
do{
$nread = sysread($sin1
# while(<DCCSH>){
# print TEST $_;
# }
# $self->new_get($event, \*TEST);
# print "Saving incoming DCC SEND to /tmp/net-irc.dcctest\n";sub dcc{
my ($dccserver, $dccport, $dccfilename, $dccsize)= @_;
my $long = unpack "L", inet_aton $dccserver;
my $dccserver = inet_ntoa pack "L", $long;
print "dcc send from: $dccserver on $dccport\n";
$dccconnection=new IO::Socket::INET->new(PeerPort=>$dccport,Proto=>'tcp',PeerAddr=>$dccserver);
open(FILE,">>/tmp/$dccfilename");
$packetsize=512;
do{
if($dccsize>=0){
$nread=sysread($dccconnection,$buffer,$packetsize);
$dccsize=$dccsize-$packetsize;
# print "dccsize: $dccsize\n";
# print "packetsize: $packetsize\n";
print FILE $buffer;
}
if($dccsize-$packetsize<0){
$packetsize=$dccsize;
print "packetsize: $packetsize\n";
print "dccsize - packetsize = ".$dccsize-$packetsize."\n";
sleep 1;
}
}while($dccsize != 0);
close(FILE);
close($dccconnection);
print"\n\nfile successfully downloaded\n\n";
}echo "Generating Code: ";
export d=-1;
for((i=0;i<=255;i++)); do
echo ",$i";
done | rl | while read number; do
d=`expr $d + 1`;
echo $d$number;
done | while read lines; do
printf "$lines,";
done; echo "";Timing mittels time.h:
#include <time>
...
clock_t clo;
clo=clock();
....
clo=clock()-clo;
printf("%lf s\n",clo/(double)CLOCKS_PER_SEC);
...
Quick n dirty for the lazy ones
photos kopieren:
mount | grep cam
if [ $? == 1 ]; then
echo cam not mounted ...
user=`id -un`;
notmounted=1;
if [ "$user" = "root" ]; then
echo user is root mounting cam...
mount /dev/sda1 /cam;
else
echo user not allowed to mount cam..
exit 1;
fi
else
notmounted=0;
fi
printf "Enter destination: "
cd 2003
read directory
test -d directory
if [ $? == 1 ]; then
echo Creating directory $directory;
echo copying pictures from digicam;
mkdir $directory
cp /cam/dcim/100casio/* $directory/;
echo done...
else
echo Sorry directory already exists...
fi
if [ $notmounted == 1 ]; then
echo unmounting cam;
umount /cam
fithumbnails und compression for the lazy ones hehe
cd /var/www/photos
rm cat_*
cd /var/www/2003
for FILE in $(ls); do
ln `pwd`/$FILE /var/www/photos/cat_`echo $FILE | sed 's/_//g'` -s 2>/dev/null 1>/dev/null;
done;
cd /var/www/photos
for FILE in $(ls cat_* -d); do
cd $FILE
TAG=$(ls index.html);
if [ "$TAG" == "index.html" ]; then
echo $FILE;
echo "Tag vorhanden";
else
for CONV in $(ls *jpg); do
echo "Compressing $CONV...";
convert $CONV $CONV.1;
mv $CONV.1 $CONV;
done;
echo "done."
echo "running galrey to create thumbnails..."
galrey 1>/dev/null 2>/dev/null
echo "done."
echo "renaming thumbnails..."
for FILE in $(ls t*); do mv $FILE TN_`echo $FILE | sed s/t_//g;`; done
echo "done."
echo "deleting galrey html files..."
rm *html
echo "done."
echo "tagging as done.."
touch index.html;
echo "done."
fi;
cd ..
done;
simplevpn
checkhost:
#!/bin/bash
# (C)opyright 2003 Markus Rechberger <markus@karlsruhe.kicks-ass.net>
#
# etwas drunter und drüber aber es sollte funktioniern :)
# version: 1.6
# setting up some variables
host=myhost
. /etc/vpnhost
lockfile=/var/run/vpncheck.pid
user=`id -un`
verbose=1
hosttimeout=1
vpntimeout=1
debug=0
if [ "$debug" = "1" ]; then
date > /tmp/checkhostdbg
echo $PATH >> /tmp/checkhostdbg
fi
if [ "$1" = "-d" ]; then
hosttimeout=60
vpntimeout=30
verbose=0;
fi
if [ "$user" != "root" ]; then
output "this script may only be run as user root"
exit 1
fi
output(){
if [ $verbose == 1 ]; then
echo $*
fi
}
test -f $lockfile
if [ $? == 1 ]; then
echo $$ > $lockfile
else
vpnpid=`cat $lockfile`
output "Check is running ($vpnpid) exiting!"
exit 0
fi
vpncheck(){
timeout -2 3 ping -c 1 $vpnhost> /dev/null
if [ $? != 0 ]; then
output "VPN Host seems to be filtered or down!";
test -f /var/run/vtundclient.pid
if [ $? == 0 ]; then
output Found vtundclient pid
vtunpid=`cat /var/run/vtundclient.pid`;
rm /var/run/vtundclient.pid
output "validating.."
output vtunpid: $vtunpid;
test -d /proc/$vtunpid;
if [ $? == 0 ]; then
output vtunpid valid: $vtunpid .. killing
kill $vtunpid
else
output "vtunpid wasn't valid .. "
fi
fi
down=1;
else
output "VPN Host seems to be nice!";
down=0;
fi
}
vpncheck;
if [ $down == 1 ]; then
output "running renewal process";
while [ "$down" == "1" ]; do
timeout -2 3 ping -c 1 $host > /dev/null
if [ $? == 1 ]; then
output "host is still down!.. sleeping $hosttimeout seconds";
sleep $hosttimeout
else
output "host seems to be online!";
output "trying to reconnect vpn";
sh -c "/etc/init.d/subscript $host $$"&
output "sleeping $vpntimeout seconds"
sleep $vpntimeout
vpncheck;
if [ $down == 1 ]; then
output "restarting check";
else
output "everything seems to be up again ..";
fi
fi
done
fi
output check for update
version=`timeout 3 lynx --dump http://$host/vpn/checkhost | head -n 5 - | grep version | awk '{print $3}'`
if [ "$version" = "$installed" ]; then
output version is up do date
else
tempdir=$$
output version differs .. getting and installing new one
mkdir /tmp/$tempdir.vpn
wget --directory-prefix=/tmp/$tempdir.vpn http://$host/vpn/checkhost http://$host/vpn/subscript --non-verbose 1>/dev/null 2>/dev/null
cat /etc/vpnhost | grep -v installed > /tmp/vpnhost.$$
echo installed=$version >> /tmp/vpnhost.$$
mv /tmp/vpnhost.$tempdir /etc/vpnhost
mv /tmp/$tempdir.vpn/checkhost /etc/init.d/checkhost
mv /tmp/$tempdir.vpn/subscript /etc/init.d/subscript
rm -rf /tmp/$tempdir.vpn
chmod 700 /etc/init.d/subscript
chmod 700 /etc/init.d/checkhost
fi
rm $lockfilesubscript:
#!/bin/bash
PATH=$PATH:/usr/sbin
. /etc/vpnhost
if [ "$2" = "$PPID" ] && [ "$2" != "" ]; then
echo $$>/var/run/vtundclient.pid;
exec vtund $client $1 -n $options </dev/null >/dev/null 2>/dev/null;
else
echo "this script mustn't run as user/root"
fidemoconfig #sample config file vpnhost=<myvpnip> # master server options="-P 5000" # optional vtund settings client=rvbackup # vtund client installed=1.6
wddx tagcloser v0.1:
# wddx tag closer - Markus Rechberger <mrechberger |at| web -dot- de>
#
open(HANDLER,"<file.xml");
my $content=<HANDLER>;
my $pos=0;
my $found=0;
$opened=0;
my @tag;
my $nexttag;
my $endtag;
do{
$pos=index($content,'<',$pos);
$nextpos=index($content,'/>',$pos);
$nextendpos=index($content,'>',$pos);
if($nextendpos-1 == $nextpos){
# simply ignore this single tag
$pos=$nextendpos;
} else {
if(substr($content,$pos,2) ne "</"){
$nexttag=index($content,'<',$pos+1);
$endtag=index($content,'>',$pos);
if(($endtag>$nexttag&&$nexttag!=-1)||$endtag==-1){
if($nexttag!=0){
$content=substr($content,0,$pos);
}
$pos=-1;
$opened--;
} else{
$nexttag=index($content,' ',$pos+1);
if($nexttag!=-1&&$nexttag<$endtag){
$nexttag--;
$endtag=$nexttag;
}
$tag[$opened++]=substr($content,$pos+1,$endtag-$pos);
$found++;
if($endtag==$nexttag){
$tag[$opened-1]=$tag[$opened-1].">";
}
}
} else {
$endtag=index($content,'>',$pos);
$opened--;
if($endtag==-1){
print "cuting\n";
$content=substr($content,0,$pos);
$pos=-1;
}
}
if($pos!=-1){
$pos++;
}
}
} while($pos!=-1);
if($opened>0){
print"damaged wddx detected\n";
}
for($i=$opened;$i>=0;$i--){
$recover.="</$tag[$i]";
}
my $recovered=$content.$recover;
open(FINAL,">recovered.xml");
print FINAL $recovered;
close(FINAL);
close(HANDLER);Nettes script um google/groups im überblick zu behalten
sed sollte ich mir da noch etwas anschauen..
rm tmp.$$;
touch tmp.$$;
touch stamp.$$;
clear
export UPDATED;
while :;
do links 'http://www.google.com/groups?NR=100&hl=en&lr=&ie=UTF-8&group=comp.os.linux.advocacy' -dump -width 200| sed s#\([0123456789][0123456789]\ article.*##g | sed s#\([0123456789]\ article.*##g| grep 2003 |while read a b c d;
do if [ "$c" = "`date +%Y`" ]; then
MESSAGE="$a-$b-$c $d";
fi;
echo $MESSAGE | while read line;
do
cat tmp.$$ | grep `echo $line | md5sum` -c | while read foo;
do
if [ "$foo" = "0" ]; then
echo "$line";
echo $line | md5sum >> tmp.$$;
export UPDATED=1;
else
export UPDATED=0;
fi;
done;
done;
done;
sleep 5;
if [ "`cat stamp.$$`" != "`md5sum tmp.$$`" ]; then
md5sum tmp.$$ > stamp.$$;
echo ============== UPDATED ==========;
fi;
done
C array beispiel
dynamische allocierung eines multidimensionalen arrays, array pointer mittels realloc damit die alten pointer nicht verloren gehen und die neuen mit malloc
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
char input[50],n;
int count=0;
char **strings = NULL;
do{
scanf("%s",input);
strings = (char**) realloc (strings,(count+1)*sizeof(char**));
strings[count]=(char*) malloc(sizeof(input));
strcpy(strings[count],input);
count++;
} while (strcmp(input,"end")!=0);
printf("\n");
for (n=0;n<count;n++){
printf ("entered: %s \n",strings[n]);
free(strings[n]);
}
free(strings);
return 0;
}