Behändiga skript för automatisering av setup/inställningar? (Raspberry Pi)

Permalänk

Behändiga skript för automatisering av setup/inställningar? (Raspberry Pi)

På jakt efter skript som smidigt och snabbt konfigurerar olika inställningar och installerar nödvändiga program/paket som behövs.

Några små exempel på vad jag hade velat automatisera via skript:

  • Sätt statiskt IP (i förhållande till routerns lokala IP-tilldelning)

  • Aktivera TRIM (bootar nämligen RaspberryPi OS från en SSD via USB)

  • Konfigurera SSH med authorized keys och säkra inställningarna

De ovanstående momenten är saker som jag manuellet konfigurerar varje gång jag installerar om min Raspberry Pi.

Jag är nybörjare när det kommer till bash scripts och liknande så jag uppskattar all hjälp och tips.

Tack på förhand

Permalänk
Medlem
Skrivet av JärnetStrongrogg:

På jakt efter skript som smidigt och snabbt konfigurerar olika inställningar och installerar nödvändiga program/paket som behövs.

Några små exempel på vad jag hade velat automatisera via skript:

  • Sätt statiskt IP (i förhållande till routerns lokala IP-tilldelning)

  • Aktivera TRIM (bootar nämligen RaspberryPi OS från en SSD via USB)

  • Konfigurera SSH med authorized keys och säkra inställningarna

De ovanstående momenten är saker som jag manuellet konfigurerar varje gång jag installerar om min Raspberry Pi.

Jag är nybörjare när det kommer till bash scripts och liknande så jag uppskattar all hjälp och tips.

Tack på förhand

Det du vill göra är att gå via Ansible. Om du lär dig det så har du nytta av det framöver också.

Visa signatur

.

Permalänk
Skrivet av fragwolf:

Det du vill göra är att gå via Ansible. Om du lär dig det så har du nytta av det framöver också.

Har hört talas om Ansible, vet inte riktigt om det är overkill för mina RPi-servrar.

Jag tänker mig mest att det hade varit smidigt att kunna bränna av ett gäng skript efter en färsk installation av Raspberry Pi OS (eller liknande Debian-baserade OS för den delen).

Hur som helst så ska du ha tack för tipset, ska läsa på lite mer om ansible.

Permalänk
Medlem
Skrivet av JärnetStrongrogg:

Har hört talas om Ansible, vet inte riktigt om det är overkill för mina RPi-servrar.

Jag tänker mig mest att det hade varit smidigt att kunna bränna av ett gäng skript efter en färsk installation av Raspberry Pi OS (eller liknande Debian-baserade OS för den delen).

Hur som helst så ska du ha tack för tipset, ska läsa på lite mer om ansible.

Mm man använder det just för den typ av uppgifter du vill göra. Det är script du gör, mer eller mindre iaf. Och du kan använda ett gratiskonto på ex github för att hantera dem. Sen när du ska installera en server/klient etc så kan du köra scriptet/ansible (playbook) så gör den precis det du vill

Visa signatur

.

Permalänk
Skrivet av fragwolf:

Mm man använder det just för den typ av uppgifter du vill göra. Det är script du gör, mer eller mindre iaf. Och du kan använda ett gratiskonto på ex github för att hantera dem. Sen när du ska installera en server/klient etc så kan du köra scriptet/ansible (playbook) så gör den precis det du vill

Låter som användbart i högsta grad, ska slänga en kik på det. Det är säkert också på tiden att jag lär mig shell- och bashskript mer ingående.

Tips och hjälp är givetvis fortfarande mycket uppmuntrat och uppskattat!

Permalänk
Medlem
Skrivet av JärnetStrongrogg:

Låter som användbart i högsta grad, ska slänga en kik på det. Det är säkert också på tiden att jag lär mig shell- och bashskript mer ingående.

Tips och hjälp är givetvis fortfarande mycket uppmuntrat och uppskattat!

Om du vill ha tips på videos så kolla på learnlinux.tv på tuben, han har en serie om Ansible.

Visa signatur

.

Permalänk

Tänkte dela med mig av mitt första hemmasnickrade skript.
Detta enkla skript skapar ett statiskt lokalt IP för din Raspberry Pi baserat på vad din router tilldelade den vid första uppkoppling. Syftet är att förenkla port forwarding så att din RPi inte dansar runt på massa olika lokala IP-adresser. När du väl kört detta skript så är det en go idé att i routern även knyta(bind:a) den initialt lokalt tilldelade IP-adressen till RPin.
Jag förutsätter att routern sköter detta backend genom att alltid tilldela exempelvis 192.168.0.137 till RPins unika MAC-adress.
Skriptet lägger även till Quad 9 som DNS resolver, ni kan ta bort eller byta ut till exempelvis Cloudflares rappa DNS 1.1.1.1.
Tar ni bort den biten av skriptet totalt kommer RPin använda default DNS som den normalt sätt får från routern.

Funkar fint på min RPi 4.

#!/bin/sh DHCPCFG="/etc/dhcpcd.conf" NIC=$(ip r show | grep default | awk '{print $5}') echo "This is the connected Network Interface:$NIC" sleep 1 IPINTERN=$(ip r show | grep default | awk '{print $7}') echo "This is the local IP:$IPINTERN" sleep 1 IPROUTER=$(ip r show | grep default | awk '{print $3}') echo "This is the router IP:$IPROUTER" sleep 1 #the first -v flag excludes reading lines that are commented out with the symbols ^\# echo "Checking if $DHCPCFG already contains Static IP configuration" sleep 1 #Beginning of local Static IP setup in /etc/dhcpcd.conf if grep -v ^\# $DHCPCFG | grep -Fq "interface $NIC" then echo "interface $NIC already exists" else echo "$NIC is not set as Network Interface for Static IP" sleep 1 echo "Adding $NIC as source NIC for Static IP" echo "interface $NIC" >> $DHCPCFG fi #Adding currently assigned local IP as local Static IP in /etc/dhcpcd.conf if grep -v ^\# $DHCPCFG | grep -Fq "static ip_address=$IPINTERN/24" then echo "$IPINTERN is already set as the Static IP" else echo "$IPINTERN is NOT set as the Static IP" sleep 1 echo "Adding $IPINTERN as Static IP" sleep 1 echo "static ip_address=$IPINTERN/24" >> $DHCPCFG fi #Adding routers IP as Static Router IP in /etc/dhcpcd.conf if grep -v ^\# $DHCPCFG | grep -Fq "static routers=$IPROUTER" then echo "$IPROUTER is already set as the Static Router IP" else echo "$IPROUTER is NOT set as the Static Router IP" sleep 1 echo "Adding $IPROUTER as Static Router IP" sleep 1 echo "static routers=$IPROUTER" >> $DHCPCFG fi #Adding Quad9 as Static DNS in /etc/dhcpcd.conf if grep -v ^\# $DHCPCFG | grep -Fq "static domain_name_servers=9.9.9.9 149.112.112.112 2620:fe::fe" then echo "Quad9 DNS is already set as Static DNS" else echo "Quad9 DNS is NOT set as Static DNS" sleep 1 echo "Adding Quad9 DNS as Static DNS" sleep 1 echo "static domain_name_servers=9.9.9.9 149.112.112.112 2620:fe::fe" >> $DHCPCFG fi echo You should restart the server now!

Permalänk

Uppdaterade skriptet

#!/bin/bash set -eu # IPINTERN=$(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}') NIC=$(ip addr show | awk '/inet.*brd/{print $NF; exit}') MULTINICS=$(ip addr show | awk '/inet.*brd/{print $NF}') IP4INT=$(hostname -I | cut -d ' ' -f 1) IP6INT=$(hostname -I | cut -d ' ' -f 2) IP4ROUTER=$(ip r | grep -i 'default via'| cut -d ' ' -f 3) DHCPCD=/etc/dhcpcd.conf echo "Local IPv4:" sleep 0.05 echo "$IP4INT" sleep 0.05 echo -e "\n" sleep 0.05 echo "Local IPv6:" sleep 0.05 echo "$IP6INT" sleep 0.05 echo -e "\n" sleep 0.05 echo "Local Router IPv4:" sleep 0.05 echo "$IP4ROUTER" sleep 0.05 echo -e "\n" sleep 0.05 read -p "Proceed with static IP configuration with above IP addresses (y/n)?" choice case "$choice" in y|Y ) echo -e "\n" sleep 0.05 echo "Proceeding with static IP configuration." ;; n|N ) echo "Script is exiting..." sleep 1 exit ;; * ) echo "invalid";; esac echo -e "\n" sleep 0.05 TIME=$(date +"%Y%m%d%H%M") echo "Backing up $DHCPCD to $DHCPCD.$TIME.backup" sudo cp $DHCPCD $DHCPCD.$TIME.backup echo -e "\n" sleep 0.05 echo -e "\n" sleep 0.05 echo "Appending: interface $NIC into $DHCPCD" sleep 0.05 sudo grep -xqF -- "interface $NIC" "$DHCPCD" || sudo echo "interface $NIC" >> "$DHCPCD" echo -e "\n" sleep 0.05 echo "Appending: static ip_address=$IP4INT/24 into $DHCPCD" sleep 0.05 sudo grep -xqF -- "static ip_address=$IP4INT/24" "$DHCPCD" || sudo echo "static ip_address=$IP4INT/24" >> "$DHCPCD" echo -e "\n" sleep 0.05 echo "Appending: static routers=$IP4ROUTER into $DHCPCD" sleep 0.05 sudo grep -xqF -- "static routers=$IP4ROUTER" "$DHCPCD" || sudo echo "static routers=$IP4ROUTER" >> "$DHCPCD" echo -e "\n" sleep 0.05 echo "Appending: static domain_name_servers=9.9.9.9 149.112.112.112 2620:fe::fe into $DHCPCD" sleep 0.05 sudo grep -xqF -- "static domain_name_servers=9.9.9.9 149.112.112.112 2620:fe::fe" "$DHCPCD" || sudo echo "static domain_name_servers=9.9.9.9 149.112.112.112 2620:fe::fe" >> "$DHCPCD" echo -e "\n" sleep 0.05 read -p "Would you like to reboot now (y/n)?" choice case "$choice" in y|Y ) echo "Rebooting..." sleep 1 sudo reboot now ;; n|N ) echo "Script is exiting..." sleep 0.5 exit ;; * ) echo "invalid";; esac