diff options
author | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2010-10-14 13:33:08 -0700 |
---|---|---|
committer | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2010-10-14 13:33:08 -0700 |
commit | e32a26b4f023012a2492af484df8bd0ec51cf43a (patch) | |
tree | 6854d97a3214863a09ed3cf275e3cac3c9fc3604 /scripts/system | |
parent | 6574830f00496d9d2075641c29b0ed0a3487b3e3 (diff) | |
download | vyatta-cfg-system-e32a26b4f023012a2492af484df8bd0ec51cf43a.tar.gz vyatta-cfg-system-e32a26b4f023012a2492af484df8bd0ec51cf43a.zip |
Add support for setting up serial console ports
Diffstat (limited to 'scripts/system')
-rw-r--r-- | scripts/system/vyatta_update_console.pl | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/scripts/system/vyatta_update_console.pl b/scripts/system/vyatta_update_console.pl new file mode 100644 index 00000000..84cf7488 --- /dev/null +++ b/scripts/system/vyatta_update_console.pl @@ -0,0 +1,73 @@ +#! /usr/bin/perl + +# **** License **** +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# This code was originally developed by Vyatta, Inc. +# Portions created by Vyatta are Copyright (C) 2010 Vyatta, Inc. +# All Rights Reserved. +# +# **** End License **** + +# Update console configuration in /etc/inittab and grub +# based on Vyatta configuration + +use strict; +use lib "/opt/vyatta/share/perl5"; +use Vyatta::Config; +use File::Compare; +use File::Copy; + +my $INITTAB = "/etc/inittab"; +my $TMPTAB = "/tmp/inittab.$$"; + +die "$0 expects no arguments\n" if (@ARGV); + +sub update_inittab { + open (my $inittab, '<', $INITTAB) + or die "Can't open $INITTAB"; + + open (my $tmp, '>', $TMPTAB) + or die "Can't open $TMPTAB"; + + # Clone original inittab but remove all references to serial lines + print {$tmp} grep { ~ /^T/ } <$inittab>; + close $inittab; + + my $config = new Vyatta::Config; + $config->setLevel("system console"); + + my $id = 0; + foreach my $tty ($config->listNodes()) { + my $speed = $config->returnValue("$tty speed"); + $speed = 9600 unless $speed; + + print {$tmp} "T$id:23:respawn:/sbin/getty $speed $tty"; + ++$id; + } + close $tmp; + + if ( compare($INITTAB, $TMPTAB) != 0) { + copy($TMPTAB, $INITTAB) + or die "Can't copy $TMPTAB to $INITTAB"; + kill 1, 1; # Send init standard signal to reread table + } + unlink($TMPTAB); +} + +sub update_grub { + # TBD +} + +update_inittab(); + +update_grub(); + +exit 0; |