On Wed, Jan 24, 2018 at 08:57:18AM +0100, Reindl Harald wrote:
> 
> 
> Am 24.01.2018 um 08:13 schrieb Yubin Ruan:
> > On Tue, Jan 23, 2018 at 04:10:10PM +0100, Lennart Poettering wrote:
> > > On Di, 23.01.18 09:09, Reindl Harald (h.rei...@thelounge.net) wrote:
> > > > depeding on how your network is configured use "network.service" or
> > > > "networkmanager.service" (or however the networkmanager service is 
> > > > called in
> > > > detail, i don#t use it)
> > > 
> > > Nope. Use "network-online.target" if you are looking for a generic
> > > unit to order after that is reached only after the network has been
> > > "configured" for the first time, for some vague definition of
> > > "configured", that is up to the networking implementation to fill with
> > > sense...
> > 
> > Now I have these in the configuration file
> > 
> > [Unit]
> > Description=Sync mail
> > Wants=network-online.target
> > After=network.target network-online.target
> > 
> > [Service]
> > Type=oneshot
> > ExecStart=/path/to/the/script
> > TimeoutStartSec=1min30s
> > 
> > [Install]
> > WantedBy=default.target
> > 
> > However the script is still broken at system startup. Hmm...I am using a
> > Ubuntu 16.04LTS. I will post if there are any news
> 
> AGAIN: how is your network started
> 
> Lennart is *not* correct - at least on Fedora all the wait-online stuff
> don't work while "After=network.service" does when you still ue the cliassic
> network.service for a lot of obvious reasons
> 
> [root@srv-rhsoft:~]$ cat /etc/rc.d/init.d/network
> #! /bin/bash
> #
> # network       Bring up/down networking
> #
> # chkconfig: - 10 90
> # description: Activates/Deactivates all network interfaces configured to \
> #              start at boot time.
> #
> ### BEGIN INIT INFO
> # Provides: $network
> # Should-Start: iptables ip6tables NetworkManager-wait-online NetworkManager
> $network-pre
> # Short-Description: Bring up/down networking
> # Description: Bring up/down networking
> ### END INIT INFO

Below are /etc/init.d/networking and /etc/init.d/network-manager respectively.
It seems that it is /etc/init.d/networking that is responsible for bringing up
the network.

######################################
# /etc/init.d/networking
######################################
#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          networking ifupdown
# Required-Start:    mountkernfs $local_fs urandom
# Required-Stop:     $local_fs
# Default-Start:     S
# Default-Stop:      0 6
# Short-Description: Raise network interfaces.
# Description:       Prepare /run/network directory, ifstate file and raise 
network interfaces, or take them down.
### END INIT INFO

PATH="/sbin:/bin"
RUN_DIR="/run/network"
IFSTATE="$RUN_DIR/ifstate"
STATEDIR="$RUN_DIR/state"

[ -x /sbin/ifup ] || exit 0
[ -x /sbin/ifdown ] || exit 0

. /lib/lsb/init-functions

CONFIGURE_INTERFACES=yes
EXCLUDE_INTERFACES=
VERBOSE=no

[ -f /etc/default/networking ] && . /etc/default/networking

verbose=""
[ "$VERBOSE" = yes ] && verbose=-v

process_exclusions() {
    set -- $EXCLUDE_INTERFACES
    exclusions=""
    for d
    do
        exclusions="-X $d $exclusions"
    done
    echo $exclusions
}

process_options() {
    [ -e /etc/network/options ] || return 0
    log_warning_msg "/etc/network/options still exists and it will be IGNORED! 
Please use /etc/sysctl.conf instead."
}

check_ifstate() {
    if [ ! -d "$RUN_DIR" ] ; then
        if ! mkdir -p "$RUN_DIR" ; then
            log_failure_msg "can't create $RUN_DIR"
            exit 1
        fi
        if ! chown root:netdev "$RUN_DIR" ; then
            log_warning_msg "can't chown $RUN_DIR"
        fi
    fi
    if [ ! -r "$IFSTATE" ] ; then
        if ! :> "$IFSTATE" ; then
            log_failure_msg "can't initialise $IFSTATE"
            exit 1
        fi
    fi
}

check_network_file_systems() {
    [ -e /proc/mounts ] || return 0

    if [ -e /etc/iscsi/iscsi.initramfs ]; then
        log_warning_msg "not deconfiguring network interfaces: iSCSI root is 
mounted."
        exit 0
    fi

    while read DEV MTPT FSTYPE REST; do
        case $DEV in
        /dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*|curlftpfs*)
            log_warning_msg "not deconfiguring network interfaces: network 
devices still mounted."
            exit 0
            ;;
        esac
        case $FSTYPE in
        
nfs|nfs4|smbfs|ncp|ncpfs|cifs|coda|ocfs2|gfs|pvfs|pvfs2|fuse.httpfs|fuse.curlftpfs)
            log_warning_msg "not deconfiguring network interfaces: network file 
systems still mounted."
            exit 0
            ;;
        esac
    done < /proc/mounts
}

check_network_swap() {
    [ -e /proc/swaps ] || return 0

    while read DEV MTPT FSTYPE REST; do
        case $DEV in
        /dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
            log_warning_msg "not deconfiguring network interfaces: network swap 
still mounted."
            exit 0
            ;;
        esac
    done < /proc/swaps
}

ifup_hotplug () {
    if [ -d /sys/class/net ]
    then
            ifaces=$(for iface in $(ifquery --list --allow=hotplug)
                            do
                                    link=${iface##:*}
                                    link=${link##.*}
                                    if [ -e "/sys/class/net/$link" ]
                                    then
                                        # link detection does not work unless 
we up the link
                                        ip link set "$iface" up || true
                                        if [ "$(cat 
/sys/class/net/$link/operstate)" = up ]
                                        then
                                            echo "$iface"
                                        fi
                                    fi
                            done)
            if [ -n "$ifaces" ]
            then
                ifup $ifaces "$@" || true
            fi
    fi
}

case "$1" in
start)
        if init_is_upstart; then
                exit 1
        fi
        process_options
        check_ifstate

        if [ "$CONFIGURE_INTERFACES" = no ]
        then
            log_action_msg "Not configuring network interfaces, see 
/etc/default/networking"
            exit 0
        fi
        set -f
        exclusions=$(process_exclusions)
        log_action_begin_msg "Configuring network interfaces"
        if [ -x /sbin/udevadm ]; then
                if [ -n "$(ifquery --list --exclude=lo)" ] || [ -n "$(ifquery 
--list --allow=hotplug)" ]; then
                        udevadm settle || true
                fi
        fi
        if ifup -a $exclusions $verbose && ifup_hotplug $exclusions $verbose
        then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;

stop)
        if init_is_upstart; then
                exit 0
        fi
        check_network_file_systems
        check_network_swap

        log_action_begin_msg "Deconfiguring network interfaces"
        if ifdown -a --exclude=lo $verbose; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;

reload)
        if init_is_upstart; then
                exit 1
        fi
        process_options

        log_action_begin_msg "Reloading network interfaces configuration"
        state=$(ifquery --state)
        ifdown -a --exclude=lo $verbose || true
        if ifup --exclude=lo $state $verbose ; then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;

force-reload|restart)
        if init_is_upstart; then
                exit 1
        fi
        process_options

        log_warning_msg "Running $0 $1 is deprecated because it may not 
re-enable some interfaces"
        log_action_begin_msg "Reconfiguring network interfaces"
        ifdown -a --exclude=lo $verbose || true
        set -f
        exclusions=$(process_exclusions)
        if ifup -a --exclude=lo $exclusions $verbose && ifup_hotplug 
$exclusions $verbose
        then
            log_action_end_msg $?
        else
            log_action_end_msg $?
        fi
        ;;

*)
        echo "Usage: /etc/init.d/networking 
{start|stop|reload|restart|force-reload}"
        exit 1
        ;;
esac

exit 0

########################################
# /etc/init.d/network-manager
########################################
#! /bin/sh
### BEGIN INIT INFO
# Provides:          network-manager
# Required-Start:    $remote_fs dbus udev
# Required-Stop:     $remote_fs dbus udev
# Should-Start:      $syslog
# Should-Stop:       $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: network connection manager
# Description:       Daemon for automatically switching network 
#                    connections to the best available connection.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="network connection manager"
NAME="NetworkManager"

DAEMON=/usr/sbin/$NAME

PIDFILE=/var/run/$NAME/$NAME.pid

SCRIPTNAME=/etc/init.d/network-manager

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

. /lib/lsb/init-functions

test -f /etc/default/NetworkManager && . /etc/default/NetworkManager

#
#       Function that starts the daemon/service.
#
d_start() {
        start-stop-daemon --start --quiet --pidfile $PIDFILE \
                --exec $DAEMON -- $DAEMON_OPTS
}

#
#       Function that stops the daemon/service.
#
d_stop() {
        start-stop-daemon --stop --retry 5 --quiet --pidfile $PIDFILE \
                --exec $DAEMON
}


case "$1" in
  start)
        log_daemon_msg "Starting $DESC" "$NAME"
        d_start
        case "$?" in
                0) log_end_msg 0 ;;
                1) log_progress_msg "already started"
                   log_end_msg 0 ;;
                *) log_end_msg 1 ;;
        esac
        ;;
  stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        d_stop
        case "$?" in
                0) log_end_msg 0 ;;
                1) log_progress_msg "already stopped"
                   log_end_msg 0 ;;
                *) log_end_msg 1 ;;
        esac
        ;;
  restart|force-reload)
        $0 stop
        $0 start
        ;;
  status)
        status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2
        exit 1
        ;;
esac

exit 0

--
Yubin
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to