Fast user mount of multiple remote mount points, skipping the responding servers not responding to http probe (ping-ish). Mount points need to be configured in fstab. Speed is achieved by using Go routines to concurrently send http probes to the targeted servers and mount the servers. It's fast compared to sequential mounts in a bash script due to the way mount(8) tries to connect to remote servers that are down. It takes a couple of seconds before mount(8) exits with a connection reset by peer error message. This Go program first probes the servers with a short timeout (150 ms) which is usually enough to determine if a server is up and then proceed with the actual mount. Each server is processed in concurrent Go routines.
In a comparison test, this Go program is about 20 times faster for a list of 9 mounts on "up" servers and 3 "downs".
This go program executes exec.Command(mount(8)) rather than the mount(2) used by the Go function syscall.Mount() because mount(2) requires root privileges.
Linux only. Could possibly also work on OS-X. Not tested.
You first need to make a YAML config file and set its full access path/name into the constant confFile in the Go code.
Servers:
- name: rpi-2
path: /home/jeanluc/my-mnt/rpi_2
host: 192.168.10.55
port: 22
- name: arsule-jeanluc
path: /home/jeanluc/my-mnt/arsule_jeanluc
host: arsule
port: 22
- name: arsule-web
path: /home/jeanluc/my-mnt/arsule_web
host: arsule
port: 22
$ gomount [options]
-tChange default timeout for ping (150 ms).-vIncrease verbosity by showing error messages.-hThis help screen.
$ gomount
bizzard-jeanluc already mounted
vps mounted
bizzard-web already mounted
ubnt already mounted
vps-jeanluc mounted
gaubert-smb not responding
arsule-jeanluc not responding
rpi-2 not responding
gaubert-sshfs not responding
arsule-web not responding
vps-web mounted
$ gomount -v
gaubert-sshfs already mounted
ubnt already mounted
gaubert-smb mount: /home/jeanluc/my-mnt/gaubert_sambaz: No such file or directory
arsule-web dial tcp 192.168.0.153:221: i/o timeout
arsule-jeanluc dial tcp 192.168.0.153:221: i/o timeout
rpi-2 dial tcp 192.168.0.156:22: i/o timeout
(c) Jean-Luc Lacroix