terça-feira, 23 de janeiro de 2024

Exportando automaticamente unidades USB pelo Samba

0 comentários

 Fonte: Exportando automaticamente unidades USB pelo Samba | davidc.net


Para o meu novo NAS, eu queria que os discos USB recém-conectados fossem montados automaticamente e, em seguida, exportados pelo Samba. O programa usbmount do Debian é usado para lidar com a montagem, e alguns scripts lidam com a exportação do Samba.

USBMauricular

O Debian tem o pacote usbmount disponível, um programa prático que roda independente de qualquer GUI. udev chama-o quando um disco USB é inserido, e usbmount monta o disco automaticamente. Ele também executa quaisquer scripts em /etc/usbmount/mount.d usando run-parts (e o equivalente /etc/usbmount/umount.d após a desconexão). Isso permite que um script personalizado seja inserido para manipular a exportação do Samba.

usbmount por padrão será montado nos diretórios /media/usb0 até /media/usb7.

smb.conf

Eu não queria editar o smb.conf diretamente. O Samba tem uma diretiva de inclusão - não permite que você inclua um diretório, mas ignora silenciosamente todos os arquivos de inclusão que não existem.

Crie o diretório vazio /etc/samba/auto e adicione as seguintes linhas à parte inferior do smb.conf:

include = /etc/samba/auto/usb0.conf
include = /etc/samba/auto/usb1.conf
include = /etc/samba/auto/usb2.conf
include = /etc/samba/auto/usb3.conf
include = /etc/samba/auto/usb4.conf
include = /etc/samba/auto/usb5.conf
include = /etc/samba/auto/usb6.conf
include = /etc/samba/auto/usb7.conf

mount.d

Em seguida, um script para criar automaticamente os arquivos de configuração acima quando uma unidade é inserida. Crie o arquivo /etc/usbmount/mount.d/50_add_samba_export com o seguinte conteúdo e chmod executável.

#!/bin/bash
SHARENAME=`basename $UM_MOUNTPOINT`
cat > /etc/samba/auto/$SHARENAME.conf <<EOF
[$SHARENAME]
   comment = $UM_VENDOR $UM_MODEL
   path = $UM_MOUNTPOINT
   read only = no
EOF
 
/etc/init.d/samba restart

Obviamente, você pode colocar qualquer coisa que quiser no fragmento do arquivo de configuração para configurar o compartilhamento da maneira que desejar.

Note que eu forço um reinício do Samba, em vez de um reload. Isso depende de você - uma recarga não interromperá as conexões existentes, mas significará que os usuários terão que se desconectar e se reconectar para ver o novo compartilhamento. Uma reinicialização interromperá brevemente as conexões, mas permitirá que elas vejam o novo compartilhamento imediatamente. Escolha o que funciona melhor para você.

umount.d

Crie um script semelhante para remover o compartilhamento quando o disco for desmontado ou removido. Isso vai em /etc/usbmount/umount.d/50_remove_samba_export - novamente, lembre-se de chmod ele +x.

#!/bin/bash
SHARENAME=`basename $UM_MOUNTPOINT`
rm -f /etc/samba/auto/$SHARENAME.conf
 
/etc/init.d/samba restart

Novamente, escolha se deseja recarregar ou reiniciar.

Arrumação final

Se a máquina for reinicializada sem desmontar corretamente, os compartilhamentos aparecerão novamente, mesmo que a unidade não esteja mais conectada. Para lidar com essa eventualidade, crie um script de inicialização para limpar o /etc/samba/auto.

Como o Debian gentilmente removeu o recurso rc.boot do administrador local, você tem que fazer isso da maneira complicada usando um script init, digamos /etc/init.d/auto-share-clean

#! /bin/sh
### BEGIN INIT INFO
# Provides:          auto-share-clean
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Cleans auto samba shares
### END INIT INFO
 
rm -f /etc/samba/auto/*

Em seguida, chmod +x /etc/init.d/auto-share-clean e update-rc.d auto-share-clean padrões.

Outros trabalhos

Provavelmente há algo inteligente que pode ser feito aqui com o UUID e a nomenclatura persistente - ou seja, exportar o compartilhamento com um nome que seja persistente em reinicializações/reconexões. Por exemplo, com duas unidades USB conectadas, qual unidade é montada primeiro pode variar, o que não é ótimo para nomes de caminho de rede persistentes.

Continue reading →
sexta-feira, 12 de janeiro de 2024

Raspberrypi set static ip with network-manager

0 comentários

 Fonte: static-ip | wiki.pcw.de


#!/bin/bash

nmcli c mod "Wired connection 1" ipv4.addresses 192.168.31.16/24 ipv4.method manual

nmcli con mod "Wired connection 1" ipv4.gateway 192.168.31.1

nmcli con mod "Wired connection 1" ipv4.dns "192.168.31.16,192.168.31.17"

nmcli c down "Wired connection 1" && nmcli c up "Wired connection 1"

Continue reading →