Запуск скриптов в зависимости от состояния сетевых интерфейсов

Понадобилось мне подмонтировать удаленную папку по sshfs.
Действие само по себе несложное, делается одной командой:sshfs [user@]host:[dir] mountpoint [options]
Но сразу же возникло еще одно условие - папка должна быть доступна всегда (ну, когда она доступна). То есть, по-хорошему, ее надо монтировать при старте системы.
Если сделать это, прописав команду в скрипте /etc/rc.local, то она просто-напросто не выполнится в связи с тем, что данный скрипт выполняется до старта графической среды. Вернее команда выполнится и ругнется на то, что никаких удаленных папок примонтировать не удалось из-за того, что сети-то нет - она поднимется только при старте графической подсистемы.
Такая же точно ситуация сложится и в том случае если прописать монтирование удаленной папки в fstab.
"Печально", - подумал я и решил написать скриптик, который проверял бы текущее состояние подключения к сети и при его наличии монтировал бы папку. Я его даже написал (благо несложный он) и он даже некоторое время поработал. Только вот, удаляя по маске какие-то файлы, я случайно удалил и его.
Переписывать не хотелось, поэтому решил почитать литературу (man interfaces). В итоге выяснил, что существуют так называемые {up/down/pre-up/post-down} скрипты, в которых выполняются определенные действия при {поднятии/опускании/перед-поднятием/после опускания} сетевых интерфейсов. Находятся они в /etc/network/if-up.d, /etc/network/if-down.d, /etc/network/if-pre-up.d, /etc/network/if-post-down.d соответственно. Сами эти скрипты запускаются из диспатчера /etc/NetworkManager/dispatcher.d/01ifupdown командой run-parts.

Итак, здесь у нас есть две возможности:

  1. Просто-напросто в разделе оператора case диспатчера /etc/NetworkManager/dispatcher.d/01ifupdown перед командой run-parts вставить необходимую строчку:su user -c "sshfs [user@]:[dir] mountpoint [options]" >/var/log/sshfs.log 2>&1
    И все хорошо заработает: загружается комп, стартуют кеды, подрубается сеть и монтируется сетевая папка. Вуаля, как говорится))
  2. Но такое же "вуаля" можно сделать и идеологически-правильным путем: пойти в каталог /etc/network/if-up.d, в нем создать скрипт (например sshfs_mount), приблизительно вот такой:#!/bin/bash
    su user -c "sshfs [user@]:[dir] mountpoint [options]" >/var/log/sshfs.log 2>&1
    exit 0

    Далее необходимо дать файлу права на исполнение. Все, этот файл запустится командой run-parts при поднятии интерфейса из диспатчера.

При написании скриптов также можно использовать некоторые специальные переменные, сообщающие нам информацию о подключении. Например, чтобы монтировать папку при подключении сети только по интерфейсу eth0, мы задействуем переменную $IFACE:if [ "$IFACE" = eth0 ]; then
        blah-blah-blah
fi

На самом деле, эти переменные задаются как раз в диспатчере, там же, думаю, можно задать свои собственные, которые будут потом использоваться во всех скриптах, запускаемых утилитой run-parts.

**********

Естественно данная история описывает личный опыт, поэтому и получилась довольно обширной, но если ее хорошо выжать, то получим вот что: