NFS является экспортом, используемым внешней системой?

Система (сервер Ubuntu 18.04 LTS) экспортирует каталог для NFS, монтирующегося системами B, C, или D. На (сервер) там способ сказать, монтировалась ли какая-либо из других систем в настоящее время каталог?

Цель состоит в том, чтобы не закрываться, если какой-либо из B, C, или D смонтировал экспортируемый каталог.

Автоматизированный (заданная сценарием оболочка) средства выполнения так были бы идеальны, но ручной в порядке.

0
задан 21 December 2019 в 18:05

2 ответа

Нет никакого прямого NFS utils (обеспечен nfs-utils) для списка клиентов, подключенных к серверу NFS (монтирует экспортируемые каталоги).

Однако, если NFSv4 используется на серверных клиентах NFS, может легко быть определен с помощью ss или netstat, потому что он использует только 1 порт 2049 и для UDP и для TCP:

Примеры

netstat -naptule | grep :2049

root@n54l:~# exportfs -rav
exporting 192.168.1.0/24:/srv/oops

root@n54l:~# netstat -naptule | grep :2049
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      0          32620      -                 
tcp        0      0 192.168.1.123:2049      192.168.1.150:730       ESTABLISHED 0          94689      -                 
tcp6       0      0 :::2049                 :::*                    LISTEN      0          32631      -                 

ss -tuna | grep :2049

root@n54l:~# ss -tuna | grep :2049
tcp   LISTEN     0      64                0.0.0.0:2049            0.0.0.0:*
tcp   ESTAB      0      0           192.168.1.123:2049      192.168.1.150:730
tcp   LISTEN     0      64                   [::]:2049               [::]:*

Мы видим сервер NFS 192.168.1.123, был 1 клиент 192.168.1.150 соединенных к нему.

Комбинация любой команды с обработкой текста (grep, сокращение, awk, sed, и т.д.) может собрать сценарий оболочки для достижения того, что Вы хотите непринужденно.

ПРИМЕЧАНИЕ: nfsstat и nfsiostat (сторона клиента) может обеспечить некоторое понимание, но результаты/статистика не являются прямыми.

0
ответ дан 21 December 2019 в 23:29

Вот простой сценарий, который выполняет мою миссию. Еще раз спасибо Терри Вангу. Сценарий, вызывающий это, входит в постоянный цикл «do», который пытается shutown и засыпает на несколько минут.

    #!/bin/bash

    # Check for open Samba share.
    # All shares are named "share" something,
    # so grep for "share" is usable

    smbstatus | grep -i share > /dev/nul
    samba=$?

    # Check for open NFS mount.
    # Grep for port 2049, then
    # grep that for "ESTAB"

    netstat -naptule | grep :2049 | grep ESTAB > /dev/nul
    nfs=$?

    # If either came back zero, something is active.

    if [[ $samba != 0 && $nfs != 0 ]]; then
       shutdown -h now
    fi
0
ответ дан 22 December 2019 в 03:07

Другие вопросы по тегам:

Похожие вопросы: