mirror of
https://github.com/byReqz/netset.git
synced 2024-11-22 12:51:15 +00:00
347 lines
15 KiB
Bash
Executable File
347 lines
15 KiB
Bash
Executable File
#!/bin/bash
|
|
# license: gpl-3
|
|
echo "which networkmanager do you want to use?"
|
|
echo "please enter the name or number of your choice"
|
|
if [[ -n $(systemctl --version | grep -e "systemd") ]];then
|
|
echo "1. systemd-resolved [installed]"
|
|
else
|
|
echo "1. systemd-resolved [not installed]"
|
|
fi
|
|
if [[ -n $(ls /etc | grep -e "NetworkManager") ]];then
|
|
echo "2. NetworkManager [installed]"
|
|
else
|
|
echo "2. NetworkManager [not installed]"
|
|
fi
|
|
if [[ -n $(ls /etc | grep -e "netplan") ]];then
|
|
echo "3. netplan [installed]"
|
|
else
|
|
echo "3. netplan [not installed]"
|
|
fi
|
|
if [[ -n $(ls /etc | grep -e "netctl") ]];then
|
|
echo "4. netctl [installed]"
|
|
else
|
|
echo "4. netctl [not installed]"
|
|
fi
|
|
read c1
|
|
if [[ "$c1" == "1" ]] || [[ "$c1" == "1." ]] || [[ "$c1" == "systemd-resolved" ]];then
|
|
if [[ -z $(sudo systemctl status systemd-networkd | grep -e "dead") ]];then
|
|
if [[ $(ls -l /etc/systemd/network | wc -l) != 0 ]];then
|
|
echo "warning, there already are configs present"
|
|
echo "do you want to continue? (Y/n)"
|
|
read continue
|
|
if [[ "$continue" == y ]] || [[ "$continue" == yes ]] || [[ -z "$continue" ]];then
|
|
touch "/etc/systemd/network/10-ethernet.network"
|
|
echo "[Match]" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "Do you want to configure by Interfacename or MAC? (ifn/MAC)"
|
|
read choice1
|
|
if [[ "$choice1" =~ "ifn" ]];then
|
|
echo "======================"
|
|
echo "Please type out the Interfacename"
|
|
echo "======================"
|
|
ip link show
|
|
read interface
|
|
echo "Name=$interface" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "" >> "/etc/systemd/network/10-ethernet.network"
|
|
elif [[ "$choice1" =~ "mac" ]];then
|
|
echo "======================"
|
|
echo "Please type out the MAC-Adress"
|
|
echo "======================"
|
|
read mac
|
|
echo "MACAdress=$mac" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "" >> "/etc/systemd/network/10-ethernet.network"
|
|
else
|
|
echo "no proper input provided"
|
|
exit
|
|
fi
|
|
echo "[Network]" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "======================"
|
|
echo "Please type out the IP-Adress you want to set (with CIDR)"
|
|
echo "======================"
|
|
read ipstatic
|
|
echo "Address=$ipstatic" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "======================"
|
|
echo "Please type out the Gateway adress"
|
|
echo "======================"
|
|
read gateway
|
|
echo "Gateway=$gateway" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "======================"
|
|
echo "Please type out the main DNS address (blank for none)"
|
|
echo "======================"
|
|
read dns
|
|
if [[ -z "$dns" ]];then
|
|
echo "======================"
|
|
echo "Interface has been configured"
|
|
echo "restart systemd-networkd to apply the profile"
|
|
echo "======================"
|
|
exit
|
|
fi
|
|
echo "DNS=$dns" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "======================"
|
|
echo "Interface has been configured"
|
|
echo "restart systemd-networkd to apply the profile"
|
|
echo "======================"
|
|
exit
|
|
else
|
|
exit
|
|
fi
|
|
else
|
|
touch "/etc/systemd/network/10-ethernet.network"
|
|
echo "[Match]" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "Do you want to configure by Interfacename or MAC? (ifn/MAC)"
|
|
read choice1
|
|
if [[ "$choice1" =~ "ifn" ]];then
|
|
echo "======================"
|
|
echo "Please type out the Interfacename"
|
|
echo "======================"
|
|
ip link show
|
|
read interface
|
|
echo "Name=$interface" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "" >> "/etc/systemd/network/10-ethernet.network"
|
|
elif [[ "$choice1" =~ "mac" ]];then
|
|
echo "======================"
|
|
echo "Please type out the MAC-Adress"
|
|
echo "======================"
|
|
read mac
|
|
echo "MACAdress=$mac" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "" >> "/etc/systemd/network/10-ethernet.network"
|
|
else
|
|
echo "no proper input provided"
|
|
exit
|
|
fi
|
|
echo "[Network]" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "======================"
|
|
echo "Please type out the IP-Adress you want to set (with CIDR)"
|
|
echo "======================"
|
|
read ipstatic
|
|
echo "Address=$ipstatic" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "======================"
|
|
echo "Please type out the Gateway adress"
|
|
echo "======================"
|
|
read gateway
|
|
echo "Gateway=$gateway" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "======================"
|
|
echo "Please type out the main DNS address (blank for none)"
|
|
echo "======================"
|
|
read dns
|
|
if [[ -z "$dns" ]];then
|
|
echo "======================"
|
|
echo "Interface has been configured"
|
|
echo "restart systemd-networkd to apply the profile"
|
|
echo "======================"
|
|
exit
|
|
fi
|
|
echo "DNS=$dns" >> "/etc/systemd/network/10-ethernet.network"
|
|
echo "======================"
|
|
echo "Interface has been configured"
|
|
echo "restart systemd-networkd to apply the profile"
|
|
echo "======================"
|
|
exit
|
|
fi
|
|
else
|
|
echo "systemd-networkd is not running"
|
|
exit
|
|
fi
|
|
elif [[ "$c1" == "2" ]] || [[ "$c1" == "2." ]] || [[ "$c1" == "networkmanager" ]];then
|
|
echo "======================"
|
|
echo "select a new connectionname"
|
|
echo "======================"
|
|
read nmc
|
|
echo "======================"
|
|
echo "type the name of the interface to use"
|
|
echo ""
|
|
ip a
|
|
echo "======================"
|
|
read nmcif
|
|
echo "======================"
|
|
echo "input the ip to set (cidr notion also accepted, defaults to /24 if empty)"
|
|
echo "======================"
|
|
read nmcip
|
|
if [[ -z "$(echo $nmcip | grep -e "/")" ]];then
|
|
nmcip=""$nmcip"/24"
|
|
fi
|
|
echo "======================"
|
|
echo "input the gateway adress to set"
|
|
echo "======================"
|
|
read nmcgw
|
|
echo "======================"
|
|
echo "input the dns server adress(es) to set"
|
|
echo "leave empty for default"
|
|
echo "======================"
|
|
read nmcdns
|
|
if [[ -z "$nmcdns" ]];then
|
|
# those are the default hetzner dns servers
|
|
nmcdns="213.133.98.98"
|
|
fi
|
|
echo -e "[connection]" > ."$nmc".nmconnection
|
|
echo -e "id="$nmc"" >> ."$nmc".nmconnection
|
|
echo -e "uuid=$(curl -s "http://uuid4.com/?count=1&format=raw")" >> ."$nmc".nmconnection
|
|
echo -e "type=ethernet" >> ."$nmc".nmconnection
|
|
echo -e "autoconnect-priority=1" >> ."$nmc".nmconnection
|
|
echo -e "interface-name="$nmcif"" >> ."$nmc".nmconnection
|
|
# not sure if this actually works
|
|
# echo -e "permissions=user:*:;" >> ."$nmc".nmconnection
|
|
echo -e "timestamp=$(date +%s)" >> ."$nmc".nmconnection
|
|
echo -e "" >> ."$nmc".nmconnection
|
|
echo -e "[ethernet]" >> ."$nmc".nmconnection
|
|
echo -e "auto-negotiate=true" >> ."$nmc".nmconnection
|
|
echo -e "mac-address-blacklist=" >> ."$nmc".nmconnection
|
|
echo -e "" >> ."$nmc".nmconnection
|
|
echo -e "[ipv4]" >> ."$nmc".nmconnection
|
|
echo -e "address1="$nmcip","$nmcgw"" >> ."$nmc".nmconnection
|
|
echo -e "dns="$nmcdns";" >> ."$nmc".nmconnection
|
|
echo -e "dns-search=" >> ."$nmc".nmconnection
|
|
echo -e "method=manual" >> ."$nmc".nmconnection
|
|
echo -e "" >> ."$nmc".nmconnection
|
|
echo -e "[ipv6]" >> ."$nmc".nmconnection
|
|
echo -e "addr-gen-mode=stable-privacy" >> ."$nmc".nmconnection
|
|
echo -e "dns-search=" >> ."$nmc".nmconnection
|
|
echo -e "method=auto" >> ."$nmc".nmconnection
|
|
echo -e "" >> ."$nmc".nmconnection
|
|
echo -e "[proxy]" >> ."$nmc".nmconnection
|
|
echo "======================"
|
|
echo "the connection file has been created in $PWD"
|
|
echo "should it be installed right now? (requires root) [y/N]"
|
|
echo "======================"
|
|
read nmcyn1
|
|
if [[ "$nmcyn1" == "y" ]] || [[ "$nmcyn1" == "Y" ]] || [[ "$nmcyn1" == "yes" ]];then
|
|
mv ."$nmc".nmconnection /etc/NetworkManager/system-connections/"$nmc".nmconnection
|
|
chown root:root /etc/NetworkManager/system-connections/"$nmc".nmconnection
|
|
chmod 600 /etc/NetworkManager/system-connections/"$nmc".nmconnection
|
|
systemctl restart NetworkManager
|
|
nmcli connection up "$nmc"
|
|
else
|
|
mv ."$nmc".nmconnection "$nmc".nmconnection
|
|
echo "======================"
|
|
echo "the config should be copied to:"
|
|
echo -e "\e[31m/etc/NetworkManager/system-connections/\e[0m"
|
|
echo "and can be activated with:"
|
|
echo -e "\e[31mnmcli connection up "$nmc"\e[0m"
|
|
echo -e "remember to set permissions to \e[31mroot/600\e[0m"
|
|
echo "======================"
|
|
exit
|
|
fi
|
|
exit
|
|
elif [[ "$c1" == "3" ]] || [[ "$c1" == "3." ]] || [[ "$c1" == "netplan" ]];then
|
|
echo "please enter the interface name"
|
|
echo "======================"
|
|
ip l
|
|
echo "======================"
|
|
read npif
|
|
if [[ -n $(ip a | grep -e "$npif") ]];then
|
|
echo "======================"
|
|
echo "select the renderer to use, defaults to networkd"
|
|
if [[ -n $(ls /etc | grep -e "NetworkManager") ]];then
|
|
echo "- Networkmanager [nm]"
|
|
fi
|
|
if [[ -n $(systemctl --version | grep -e "systemd") ]];then
|
|
echo "- systemd-networkd [nd]"
|
|
fi
|
|
echo "======================"
|
|
read nprd
|
|
if [[ "$nprd" == "nm" ]] || [[ "$nprd" == "networkmanager" ]] || [[ "$nprd" == "NetworkManager" ]];then
|
|
nprd="NetworkManager"
|
|
elif [[ "$nprd" == "nd" ]] || [[ "$nprd" == "networkd" ]] || [[ "$nprd" == "systemd-networkd" ]];then
|
|
nprd="networkd"
|
|
else
|
|
nprd="networkd"
|
|
fi
|
|
echo "please enter the ip adress to set (with cidr notation)"
|
|
read npip
|
|
echo "please enter the gateway adress to set"
|
|
read npgw
|
|
echo "please enter the dns servers adress, leave empty for default"
|
|
read npdns
|
|
if [[ -z "$npdns" ]];then
|
|
npdns="213.133.98.98"
|
|
fi
|
|
echo "network:" > $PWD/.netplan.yaml
|
|
echo -e " version: 2" >> $PWD/.netplan.yaml
|
|
echo -e " renderer: "$nprd"" >> $PWD/.netplan.yaml
|
|
echo -e " ethernets:" >> $PWD/.netplan.yaml
|
|
echo -e " "$npif":" >> $PWD/.netplan.yaml
|
|
echo -e " addresses:" >> $PWD/.netplan.yaml
|
|
echo -e " - "$npip"" >> $PWD/.netplan.yaml
|
|
echo -e " gateway4: "$npgw"" >> $PWD/.netplan.yaml
|
|
echo -e " nameservers:" >> $PWD/.netplan.yaml
|
|
echo -e " search: [mydomain, otherdomain]" >> $PWD/.netplan.yaml
|
|
echo -e " addresses: ["$npdns"]" >> $PWD/.netplan.yaml
|
|
echo "======================"
|
|
echo "config has been generated in the current directory"
|
|
echo "should the config be installed now? (y/N)"
|
|
echo "======================"
|
|
read $npyn2
|
|
if [[ "$npyn2" == "y" ]] || [[ "$npyn2" == "Y" ]] || [[ "$npyn2" == "yes" ]];then
|
|
mv .netplan.yaml /etc/netplan/netplan.yaml
|
|
exit
|
|
else
|
|
mv .netplan.yaml netplan.yaml
|
|
echo "======================"
|
|
echo "the config should be copied to:"
|
|
echo -e "\e[31m/etc/netplan/\e[0m"
|
|
echo "and can be activated with:"
|
|
echo -e "\e[31mnetplan apply\e[0m"
|
|
echo "======================"
|
|
exit
|
|
fi
|
|
else
|
|
echo "interface not found, exiting"
|
|
exit
|
|
fi
|
|
elif [[ "$c1" == "4" ]] || [[ "$c1" == "4." ]] || [[ "$c1" == "netctl" ]];then
|
|
echo "======================"
|
|
echo "type the name of the interface to use"
|
|
echo "======================"
|
|
ip a
|
|
echo "======================"
|
|
read nctlif
|
|
echo "======================"
|
|
echo "input the ip to set (cidr notion needed, defaults to /24)"
|
|
echo "======================"
|
|
read nctlip
|
|
if [[ -z "$(echo $nctlip | grep -e "/")" ]];then
|
|
nctlip=""$nctlip"/24"
|
|
fi
|
|
echo "======================"
|
|
echo "input the gateway adress to set"
|
|
echo "======================"
|
|
read nctlgw
|
|
echo "======================"
|
|
echo "input the dns server adress(es) to set"
|
|
echo "leave empty for default"
|
|
echo "======================"
|
|
read nctldns
|
|
if [[ -z "$nctldns" ]];then
|
|
# those are the default hetzner dns servers
|
|
nctldns="213.133.98.98"
|
|
fi
|
|
echo -e "Interface="$nctlif"" >> .netctl
|
|
echo -e "Connection=ethernet" >> .netctl
|
|
echo -e "IP=static" >> .netctl
|
|
echo -e "Address=('"$nctlip"')" >> .netctl
|
|
echo -e "Gateway='"$nctlgw"'" >> .netctl
|
|
echo -e "DNS=('"$nctldns"')" >> .netctl
|
|
echo "======================"
|
|
echo "config has been generated in the current directory"
|
|
echo "should the config be installed now? (y/N)"
|
|
echo "======================"
|
|
read $npyn2
|
|
if [[ "$npyn2" == "y" ]] || [[ "$npyn2" == "Y" ]] || [[ "$npyn2" == "yes" ]];then
|
|
mv .netctl /etc/netctl/
|
|
netctl enable netctl
|
|
netctl start netctl
|
|
exit
|
|
else
|
|
mv .netctl netctl-config
|
|
echo "======================"
|
|
echo "the config should be copied to:"
|
|
echo -e "\e[31m/etc/netctl\e[0m"
|
|
echo "and activated with"
|
|
echo -e "\e[31mnetctl enable netctl-config\e[0m"
|
|
echo -e "\e[31mnetctl start netctl-config\e[0m"
|
|
echo "======================"
|
|
exit
|
|
fi
|
|
else
|
|
echo "selected manager not supported"
|
|
exit
|
|
fi |