]> freie-schul-it.de Git - fsit-smgt.git/blob - examples/server-mgt-with-ansible/add-new-client.sh
weitere playbooks umbenannt
[fsit-smgt.git] / examples / server-mgt-with-ansible / add-new-client.sh
1 #!/bin/bash
2
3 # Wir brauchen: $ip $newhostname $macen $macwl
4 # Der neue Rechner muss mit PXE und Preseed fertig sein
5
6 ip="$1"
7 newhostname="$2"
8
9 # Nach den Werten fragen und in Variable schreiben,
10 # wenn diese beim Aufruf vergessen wurden.
11 if [ -z $ip ]
12 then
13 read -p "ip-Adresse des neuen Rechners: " ip
14 fi
15 if [ -z $newhostname ]
16 then
17 read -p "Hostname des neuen Rechners: " newhostname
18 fi
19
20 # temporaere hosts-Datei fuer ansible
21 echo "$ip" > temphosts
22 #cat temphosts
23
24 # Pruefe, ob $ip in custom-list
25 # wenn ja --> Abbruch
26 #if grep ${ip} files/dns-pihole_custom.list
27 #then
28 # echo "IP bereits in dns-pihole_custom.list eingetragen"
29 # echo " bitte entfernen oder andere IP auswählen! Abbruch :-("
30 # exit 1
31 #fi
32
33 # suche in ../client-mgt/hosts nach $newhostname
34 # wenn nein
35 # stop,
36 # Echo nicht in hosts dazhei, eingetragen, dann weiter
37 if grep ${newhostname} ../client-mgt/hosts
38 then
39 echo "Rechnername in hosts-Datei eingetragen, suupi!"
40 else
41 echo "Rechnername fehlt in ../client-mgt/hosts. Abbruch :-("
42 exit 1
43 fi
44
45 # suche in /home/ansible/.ssh/known_hosts nach $ip
46 # wenn ja
47 ssh-keygen -f "/home/ansible/.ssh/known_hosts" -R "$ip"
48 #if grep ${ip} $HOME/.ssh/known_hosts
49
50 ssh -o BatchMode=yes -o ConnectTimeout=5 -o StrictHostKeyChecking=no ${ip} 'exit 0'
51 if [ $? != 0 ]
52 then
53 echo "Host nicht per SSH erreichbar! Abbruch :-("
54 exit 1
55 fi
56
57 # MAC-Adressen finden
58 macen=$(ssh ${ip} cat /sys/class/net/en*/address)
59 echo "MAC-Ethernet: $macen"
60 macwl=$(ssh ${ip} cat /sys/class/net/wl*/address)
61 echo "MAC-WLAN: $macwl"
62
63 if [ -z $macwl ]
64 then
65 echo "dhcp-host=${macen},${ip},${newhostname}" >> files/dns20-pihole_04-pihole-static-dhcp.conf
66 else
67 echo "dhcp-host=${macen},${macwl},${ip},${newhostname}" >> files/dns20-pihole_04-pihole-static-dhcp.conf
68 fi
69
70 # Hostnamen aendern
71 oldhostname=$(ssh ${ip} hostname)
72 ssh ${ip} sudo hostnamectl set-hostname ${newhostname}
73 # change in /etc/hosts
74 ssh ${ip} sudo sed -i "s/$oldhostname/$newhostname/" /etc/hosts
75
76 echo "$ip $newhostname" >> files/dns-pihole_custom.list
77
78 echo
79 echo "Prüfe, ob Host perAnsible erreichbar ist"
80 ansible ${ip} -i temphosts -m ping
81
82 echo
83 echo "Alle DNS-Server mit neuen Listen versorgen"
84 ansible-playbook pihole-update.yml
85
86 echo
87 echo "pruefen, ob DNS-Aufloesung fuer neuen Host funktioniert"
88 ping -c 3 ${newhostname}
89
90 # temporaere Dateien loeschen"
91 rm temphosts
92
93 echo
94 echo "+++ pihole static-dhcp file +++"
95 tail files/dns20-pihole_04-pihole-static-dhcp.conf
96
97 echo
98 echo "+++ pihole custom list"
99 tail files/dns-pihole_custom.list
100
101 echo
102 echo "fertig?"
103 echo "fertig!"
104 echo " :-)"
105
106 ###
107 #ansible ${ip} -i newhost -m ping
108 #ansible ${ip} -i newhost -m gather_facts
109 #ansible ${ip} -i newhost -m ansible.builtin.setup -a 'filter=ansible_wlp4s0'
110