Commit 6f66ba27 authored by Martin Klimes (k11m1)'s avatar Martin Klimes (k11m1)
Browse files

auto updater via cron

parent ae104d18
...@@ -31,7 +31,9 @@ If you are printing with unauthenticated IPP or Kerberized IPP, you will have to ...@@ -31,7 +31,9 @@ If you are printing with unauthenticated IPP or Kerberized IPP, you will have to
## Usage ## Usage
Usage: `./install.pl <printer-name>` , where `<printer-name>` is a valid printer name. For example, to install printer `lj2b` run Usage: `./install.pl [--usage] <printer-name>` , where `<printer-name>` is a valid printer name. If supplied `--usage` script will only update drivers.
For example, to install printer `lj2b` run
```shell ```shell
./install.pl lj2b ./install.pl lj2b
......
#!/usr/bin/perl -w #!/usr/bin/perl -w
use File::Copy;
use strict;
if (-d "/opt/fi-printers") {
#check
print "Opt dir exits\n";
my $output = `git pull --ff-only`;
if ($output eq "Already up to date.\n") {
print "Nothing to do";
# exit;
}
}
else
{
#clone
my $output = `git clone https://gitlab.fi.muni.cz/unix/fi-printers.git /opt/fi-printers`;
}
# copy cron.pl into weekly cron
copy("/opt/fi-printers/cron.pl", "/etc/cron.weekly/fi-printers.pl");
my $message = "Already up to date.";
my $output = `git pull --ff-only`;
if ($output eq "Already up to date.\n") {
print "Nothing to do";
exit;
}
print $output;
my @files = glob( '/etc/cups/ppd/*.ppd' ); my @files = glob( '/etc/cups/ppd/*.ppd' );
...@@ -22,5 +36,9 @@ for my $item (@files) { ...@@ -22,5 +36,9 @@ for my $item (@files) {
} }
for my $printer (@files) { for my $printer (@files) {
system("./install.pl --update $printer") my $command = "/opt/fi-printers/install.pl --update $printer";
print "$command \n";
system($command);
} }
...@@ -10,23 +10,10 @@ use File::Copy; ...@@ -10,23 +10,10 @@ use File::Copy;
use File::Basename; use File::Basename;
use Getopt::Long qw(:config bundling); use Getopt::Long qw(:config bundling);
#my $opt = {
#};
#-------------------------------------------------------------------- #--------------------------------------------------------------------
# Option processing # DATA
#-------------------------------------------------------------------- #--------------------------------------------------------------------
my $only_update = '';
my $only_usage = '';
GetOptions(
'update' => \$only_update,
'help|h|?' => \$only_usage
) or die;
########
# DATA #
########
my $printers = { my $printers = {
'copy4b' => { 'copy4b' => {
...@@ -111,9 +98,24 @@ my $models = { ...@@ -111,9 +98,24 @@ my $models = {
} }
}; };
############### #--------------------------------------------------------------------
# END OF DATA # # Option processing
############### #--------------------------------------------------------------------
my $only_update = '';
my $only_usage = '';
GetOptions(
'update' => \$only_update,
'help|h|?' => \$only_usage
) or die;
if ($only_usage || @ARGV != 1) {
usage();
}
#--------------------------------------------------------------------
# Helper functions
#--------------------------------------------------------------------
sub get_description { sub get_description {
my ($printer_name) = @_; my ($printer_name) = @_;
...@@ -225,11 +227,12 @@ sub usage { ...@@ -225,11 +227,12 @@ sub usage {
say say
"Script for installing faculty printers on Linux via Samba print server."; "Script for installing faculty printers on Linux via Samba print server.";
say "Requires local CUPS server running and Samba client installed."; say "Requires local CUPS server running and Samba client installed.";
say "usage: $0 <printer-name>"; say "usage: $0 [--update] <printer-name>";
say "Must be run as root."; say "Must be run as root.";
say "Triumph-Adler 50007ci needs Python 2.7 as a dependency"; say "Triumph-Adler 50007ci needs Python 2.7 as a dependency";
say "and will install 2 additional python modules automatically."; say "and will install 2 additional python modules automatically.";
print "\n\n"; say "Option --update only updates installed printer";
print "\n";
print_printers(); print_printers();
exit 1; exit 1;
...@@ -281,14 +284,22 @@ sub pre_TA5007ci { ...@@ -281,14 +284,22 @@ sub pre_TA5007ci {
return; return;
} }
####################### sub check_cron {
# START OF THE SCRIPT # if (! -e "/etc/cron.weekly/fi_printers_cron.pl") {
####################### print "[PROMPT] Do you want to enable automatic updates via cron? [Y/n]";
# Show help chomp(my $answer = <STDIN>);
if ($only_usage || @ARGV != 1) { if ($answer eq 'Y' || $answer eq 'y' || $answer eq '') {
usage(); print "CRON SHALL BE INSTALLED\n";
copy("cron.pl", "/etc/cron.weekly/fi_printers_cron.pl")
or die "Could not copy cron script\n";
chmod 0700, "/etc/cron.weekly/fi_printers_cron.pl"
}
}
} }
#--------------------------------------------------------------------
# Start of the script
#--------------------------------------------------------------------
my ($printer_name) = @ARGV; my ($printer_name) = @ARGV;
...@@ -320,9 +331,11 @@ for my $filter (@{($models->{$model} // {})->{filters} // []}) { ...@@ -320,9 +331,11 @@ for my $filter (@{($models->{$model} // {})->{filters} // []}) {
} }
if ($only_update) { if ($only_update) {
update_ppd("$printer_name"); update_ppd("$printer_name");
say "[INFO] Update is completed."; say "[INFO] Update of $printer_name is completed.";
} }
else { else {
install_printer("$printer_name"); install_printer("$printer_name");
say "[INFO] Installation is completed."; say "[INFO] Installation of $printer_name is completed.";
check_cron();
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment