#!/bin/sh -e # Filename: debnet # Purpose: scan for Debian-style network configs and enable it on the system # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under GPL v2+. ################################################################################ . /etc/grml/lsb-functions if [ "$1" = "-h" -o "$1" = "--help" ] ; then echo "Usage: debnet" echo "Looks for /etc/network/interfaces on all volumes and uses it to" echo "configure the running system." echo "WARNING: The networking subsystem will be restarted." exit 0 fi DEVICES="$(< /proc/partitions tail -n +3 | awk '($4 !~ /loop[0-9]+/) {print "/dev/"$4}' | tr "\n" " ")" DEVICES="$DEVICES $(ls /dev/mapper/*)" FOUND_DEBNET="" eindent if ! mount | grep '/mnt ' >/dev/null 2>&1 ; then for i in $DEVICES; do if mount -o ro -t auto "$i" /mnt >/dev/null 2>&1; then einfo "Scanning on $i" if [ -f /mnt/etc/network/interfaces ]; then einfo "/etc/network/interfaces found on ${i}" ; eend 0 FOUND_DEBNET="$i" break fi umount /mnt fi done if [ -n "$FOUND_DEBNET" ]; then einfo "Stopping network." /etc/init.d/networking stop >/dev/null 2>&1 ; eend $? einfo "Copying Debian network configuration from $FOUND_DEBNET to running system." rm -rf /etc/network/run cp -a /mnt/etc/network /etc rm -rf /etc/network/run mkdir /etc/network/run umount /mnt ; eend $? einfo "Starting network." invoke-rc.d networking start ; eend $? else eerror "/etc/network/interfaces not found on external partitions." ; eend 1 fi eoutdent else eerror "Error: /mnt already mounted." ; eend 1 fi # EOF