# HG changeset patch # User devi # Date 1132692467 -7200 # Node ID 5e5878bd1b2054e0a1daf713c61b572957ae8694 # Parent aa788e638a9d269819ad85a5b552e8e46972c27c Скрипты lm вынесены в отдельный файл l3config diff -r aa788e638a9d -r 5e5878bd1b20 l3config.pm --- a/l3config.pm Tue Nov 22 22:45:45 2005 +0200 +++ b/l3config.pm Tue Nov 22 22:47:47 2005 +0200 @@ -124,6 +124,8 @@ "lmssh" => "./lm-ssh", "lminstall" => "./lm-install", "ssh_user" => "root", + + "l3scripts" => "l3scripts", ); diff -r aa788e638a9d -r 5e5878bd1b20 l3scripts --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/l3scripts Tue Nov 22 22:47:47 2005 +0200 @@ -0,0 +1,63 @@ +###install +cat $sshkey | $lmssh $ssh_user@$host /bin/sh -c '"mkdir -p ~/.ssh; cat >>~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"' + +###install-lm +cat $lminstall | ssh $ssh_user@$host /bin/sh -s $dirs +scp l3config.pm l3-agent $ssh_user@$host:/usr/local/bin + +###install-pm +scp PM/* $ssh_user@$host:/tmp +ssh $ssh_user@$host 'cd /tmp; tar xfz Term-VT102*.gz; cd Term-VT102*[^z]; perl Makefile.PL; make ; make install' +#ssh $ssh_user@$host 'cd /tmp; tar xfz Text-Iconv*.gz; cd Text-Iconv*[^z]; perl Makefile.PL; make ; make install' + +###copy-lablogs +for i in $dirs +do + mkdir -p $lablogs/${i##*/} + scp -q $ssh_user@$host:${i}/.lilalo/* $lablogs/${i##*/} +done + +###setlab +for i in $dirs +do + echo $lab | ssh $ssh_user@$host "cat > "${i}"/.labmaker/lab" +done + +###makeout +common=$course-$date +personal=$course-$date-$email +mkdir -p $outpath/${common}/{Lablogs,Docs} +mkdir -p $outpath/${personal}/{Course,Files} +cd $outpath/${personal} +ln -s ../${common}/Lablogs . +ln -s ../${common}/Docs . +cd ~- +export UG_PERSONAL=$outpath/${personal}/Course +export UG_CENTER="$center" +export UG_COURSE="$course" +export UG_DATE="$date" +export UG_STUDENT="$name" +export UG_COMPANY="$company" +export UG_MAIL="$email" +cd $coursepath; make personal; cd ~- + +###POST-makeout +rm -rf /tmp/$course-$date +mkdir /tmp/$course-$date +find $outpath/*$date* -name \*.pdf -exec cp {} /tmp/$course-$date/ \; +cd /tmp +zip -r $course-$date.zip $course-$date +mv $course-$date.zip /var/www/tmp/ +mutt -s 'Сгенерированы методички' imchubin\@mail.ru < "no", # Вспомогательные программы @@ -85,7 +87,8 @@ exit(0); } - load_config; + init_config(); + #load_config; load_run; load_scripts; load_class; @@ -126,10 +129,19 @@ sub load_scripts { + print join " ", %Config; + print "\n"; + + open (SCRIPTS, "$Config{l3scripts}") + or die "Cant open l3scripts file: ".$Config{l3scripts}.": $!\n"; + binmode SCRIPTS, ":utf8"; local $/; $_=; + close(SCRIPTS); + %Scripts = ("empty-element", split (/###(.*)\n/)); delete($Scripts{"empty-element"}); + } sub load_config @@ -265,27 +277,39 @@ my $command = shift; my $arg = join " ", @_; my $i=1; + + my %myenv = ( %Config, + lab => $arg, + center => $XMLClass->{"center"}, + course => $XMLClass->{"course"}, + date => $XMLClass->{"date"}, + coursepath => $XMLCourse->{"path"}, + ); + + if (grep { $_ eq "PRE-$command"} keys %Scripts) { + $_=$Scripts{"PRE-$command"}; + s/\$(\w+)/$myenv{$1}/ge; + open(SHELL, "|/bin/sh -s"); + binmode SHELL, ":utf8"; + print SHELL $_; + close (SHELL); + } + + for my $m (sort keys %Machines) { if (!@SelectedMachines || grep $_ eq $i, @SelectedMachines) { print "$m:\n" if $Config{"show_host"} =~ /y/i; - my %myenv = ( %Config, + %myenv = ( %myenv, host => $m, dirs => "/root /home/".$Machines{$m}->{"user"}, lablogs => $Config{"path_lablogs"}."/". $XMLClass->{"course"}."/". $XMLClass->{"date"}."/". "$m", - lab => $arg, - email => $Machines{$m}->{"student"}->{"email"}, company => $Machines{$m}->{"student"}->{"company"}, - center => $XMLClass->{"center"}, - course => $XMLClass->{"course"}, - date => $XMLClass->{"date"}, name => $Machines{$m}->{"name"}, - coursepath => $XMLCourse->{"path"}, - ); if (grep { $_ eq $command} keys %Scripts) { $_=$Scripts{"$command"}; @@ -306,6 +330,15 @@ } $i++; } + + if (grep { $_ eq "POST-$command"} keys %Scripts) { + $_=$Scripts{"POST-$command"}; + s/\$(\w+)/$myenv{$1}/ge; + open(SHELL, "|/bin/sh -s"); + binmode SHELL, ":utf8"; + print SHELL $_; + close (SHELL); + } } @@ -450,12 +483,7 @@ sub print_usage_info { print "Usage:\n\n\t$0 [host-list] command\n"; - while () { - print $_; - } -} - -__USAGE__ + print <<'USAGE'; Commands: @@ -485,51 +513,7 @@ If host list is not specified, command is executed on all of the machines +USAGE +} -__SCRIPTS__ -###install -cat $sshkey | $lmssh $ssh_user@$host /bin/sh -c '"mkdir -p ~/.ssh; cat >>~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"' - -###install-lm -cat $lminstall | ssh $ssh_user@$host /bin/sh -s $dirs -scp l3config.pm l3-agent $ssh_user@$host:/usr/local/bin - -###install-pm -scp PM/* $ssh_user@$host:/tmp -#ssh $ssh_user@$host 'cd /tmp; tar xfz Term-VT102*.gz; cd Term-VT102*[^z]; perl Makefile.PL; make ; make install' -ssh $ssh_user@$host 'cd /tmp; tar xfz Text-Iconv*.gz; cd Text-Iconv*[^z]; perl Makefile.PL; make ; make install' - -###copy-lablogs -for i in $dirs -do - mkdir -p $lablogs/${i##*/} - scp -q $ssh_user@$host:${i}/.lilalo/* $lablogs/${i##*/} -done - -###setlab -for i in $dirs -do - echo $lab | ssh $ssh_user@$host "cat > "${i}"/.labmaker/lab" -done - -###makeout -common=$course-$date -personal=$course-$date-$email -mkdir -p $outpath/${common}/{Lablogs,Docs} -mkdir -p $outpath/${personal}/{Course,Files} -cd $outpath/${personal} -ln -s ../${common}/Lablogs . -ln -s ../${common}/Docs . -cd ~- -export UG_PERSONAL=$outpath/${personal}/Course -export UG_CENTER="$center" -export UG_COURSE="$course" -export UG_DATE="$date" -export UG_STUDENT="$name" -export UG_COMPANY="$company" -export UG_MAIL="$email" -cd $coursepath; make personal; cd ~- - -###watch -cat taillast.pl | ssh $ssh_user@$host perl - /root/.labmaker