Überprüfen Sie die Verbindung zum AFP-Server über Bash

Gibt es eine Möglichkeit, programmgesteuert zu überprüfen, ob eine Verbindung zu einem AFP-Server hergestellt wird? Ich habe versucht, den Server zu pingen, aber das führt immer zu einer Zeitüberschreitung.

Bisher ist die einzige Problemumgehung, die ich zum Laufen gebracht habe, folgende:

#!/bin/bash
open "afp://website.com/afpDir/"
until [[ -d /Volumes/afpDir/ ]]; do
    echo 'waiting for connections'
    sleep 1
done

Dies funktioniert jedoch nur, wenn ich gezielt nach dem afpDirVerzeichnis suche, während es im Finder geöffnet ist. Gibt es eine zuverlässige Möglichkeit zu überprüfen, ob eine Verbindung zu diesem AFP-Server besteht, oder vielleicht sogar eine zuverlässige IP für den Server zu finden?

Was gibt der mountBefehl auf Ihrem System zurück - sowohl wenn der AFP-Server verbunden als auch getrennt ist?
@Scot Mount gibt mir //username@website.com/homedir on /Volumes/homedir (afpfs, nodev, nosuid, quarantine, mounted by localuser)und es ist weg, wenn ich abmelde.
mountDie Verwendung und Analyse der Ergebnisse ist also eine weitere Möglichkeit.
@Scot absolut, es ist eine gute Idee.

Antworten (1)

Um zu überprüfen, ob eine Verbindung zu einem AFP-Server - mit dem festen Listening-Port 548 - hergestellt wird, verwenden Sie:

netstat -naf inet | grep [.]548[\ ].*ESTAB*

oder mit Anführungszeichen:

netstat -naf inet | grep '[.]548[\ ].*ESTAB*'

mit -naf inet: keine Namensauflösung, alle Sockets und Beschränkung auf IPv4

und [.]548[\ ].*ESTAB*(grep for an) <IP-address>.548 ESTABLISHED. Der [.]wird benötigt, um Ports wie 2548 oder 10548 auszuschließen. [\ ]schließt Ports wie 5480 oder 5481 aus. Der .*verkettet alles (Tabulator/Leerzeichen) zwischen 548 und ESTAB*.

Ein Beispielergebnis sieht so aus:

tcp4       0      0  192.168.1.24.54340       192.168.1.2.548         ESTABLISHED

192.168.1.24 ist dann die IP-Adresse des Clients und 192.168.1.2 die IP-Adresse des Servers.

hmm, ich erhalte keine gefundenen Übereinstimmungen, netstat -naf inet | grep [.]548[\ ].*ESTAB*selbst wenn bestätigt wird, dass der Server gemountet ist.
Ich habe jedoch eine *.548-Übereinstimmung erhalten. Haben Sie etwas dagegen, die Verwendung des Sterns und der Klammern kurz zu erklären? Ich war davon ausgegangen, dass Klammern nur ein Regex-ODER-Match für einzelne Zeichen sind.
@MicksKetches Der [.]ist erforderlich, um Ports wie 2548 oder 10548 auszuschließen. [\ ]schließt Ports wie 5480 oder 5481 aus. Der .*verkettet alles (Tabulator/Leerzeichen) zwischen 548 und ESTAB*.
Update: Ich habe ein gewünschtes Ergebnis erhalten, wenn ich die Aussage wie folgt in Anführungszeichen gesetzt habe: netstat -naf inet | grep '[.]548[\ ].*ESTAB*'Ich hoffe, das war das, was Sie gemeint haben.