/[cvs]/jonen/perl/scripts/sysTools/debian/apt-get_remote.pl
ViewVC logotype

Contents of /jonen/perl/scripts/sysTools/debian/apt-get_remote.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations)
Mon Feb 3 10:34:08 2003 UTC (21 years, 5 months ago) by jonen
Branch: MAIN
Changes since 1.1: +7 -4 lines
File MIME type: text/plain
+ bugfix

1 #!/usr/bin/perl
2 ######################################
3 # $Id: apt-get_remote.pl,v 1.1 2003/02/03 10:04:56 jonen Exp $
4 ######################################
5 # $Log: apt-get_remote.pl,v $
6 # Revision 1.1 2003/02/03 10:04:56 jonen
7 # + first init
8 #
9 #
10 ######################################
11
12
13 =pod
14
15 =head2 apt-get_remote.pl - remote apt-get via mail, web etc.
16
17 Sebastian Utz S<seut@netfrag.org>
18
19 B<last changes>
20
21 $Id: apt-get_remote.pl,v 1.1 2003/02/03 10:04:56 jonen Exp $
22
23 =head3 Description
24
25 Currently, it generates only filtered output of 'apt-get update; apt-get --dry-run upgrade' to e.g. mail via cronjob to some user.
26
27 =head3 ToDo
28
29 o generates html output and replace 'o' with e.g. a 'checkbox'
30 o add action to do a upgrade to all packages
31 o make this available via http
32 o get response via mail, http, etc. and check selected packages
33 o install selected packages
34 o some more functions:
35 o generate list of all installed packages
36 o generate list of all not-installed packages
37 o generate list of all 'old' packages
38 o generate list of all '-dev' and unused packages
39
40
41 =cut
42
43
44 use strict;
45 use warnings;
46
47 use Data::Dumper;
48 use Sys::Hostname;
49
50 my $hostname = hostname();
51
52 my $apt_get = "/usr/bin/apt-get";
53 my $apt_update = $apt_get . " update";
54 my $apt_upgrade = $apt_get . " -y upgrade";
55 my $apt_dry_upgrade = $apt_get . " --dry-run upgrade";
56
57 my $result = `$apt_dry_upgrade`;
58
59 my @raw_data = split("\n", $result);
60
61 my @new_lines;
62
63 push @new_lines, "Checking for upgrade available packages for '". $hostname . "':\n";
64
65 my $count_lines = $#raw_data;
66 my $cnt = 1;
67 foreach(@raw_data) {
68 if($_ =~ /^\s\s/ ) {
69 s/^\s\s/ /;
70 my @packages = split(" ", $_);
71 foreach(@packages) {
72 push @new_lines, " o " . $_;
73 }
74 }
75 elsif($_ =~ /packages upgraded,/ ) {
76 push @new_lines, $_;
77 if($raw_data[$cnt] =~ /or removed\.$/) {
78 push @new_lines, $raw_data[$cnt];
79 splice(@raw_data, $cnt, 1);
80 }
81 push @new_lines, "\n";
82 push @new_lines, "New Packages available for upgrade:";
83 }
84 elsif( $_ =~ /^Inst/ ) {
85 push @new_lines, " o " . $_;
86 }
87 elsif( $_ !~ /^Conf/ ) {
88 push @new_lines, $_;
89 }
90 if($cnt == $count_lines) {
91 push @new_lines, "\n\n";
92 }
93 $cnt++;
94 }
95
96
97 print join("\n", @new_lines);

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed