#!/bin/bash ######系統配合 #下載ISO檔 #https://ftp.ubuntu-tw.org/ubuntu-releases/26.04.1/ 安裝 ######鄭亮星 jls@mail.jls.idv.tw , jls550225@gmail.com , jls@acfs.tw ##安裝ADSL播號 clear while [ "$yn" != "yes" -a "$yn" != "YES" ] do read -p "請輸入 IP(例如 168.168.168.168 ):" IPaddress read -p "請輸入播接帳號(例 71234567@ip.hinet.net ):" AdslName read -p "請輸入播接密碼(例如 password ):" Password read -p "請輸入您的網站名稱(例如 dns.jls.idv.tw ):" HostName read -p "請輸入(MySQL)資料庫密碼(例如 password ):" Mysqlpasswd read -p "請輸入系統通知郵件信箱(例如 jls@jls.idv.tw ):" Email clear echo "IPaddress=$IPaddress" > /root/setup.txt echo "AdslName=$AdslName" >> /root/setup.txt echo "Password=$Password" >> /root/setup.txt echo "HostName=$HostName" >> /root/setup.txt echo "Mysqlpasswd=$Mysqlpasswd" >> /root/setup.txt echo "Email=$Email" >> /root/setup.txt echo "您輸入的 IP 是: $IPaddress" echo "您輸入的播接帳號是: $AdslName" echo "您輸入的播接密碼是: $Password" echo "您輸入的網站名稱是: $HostName" echo "您輸入的(MySQL)資料庫密碼是: $Mysqlpasswd" echo "您輸入的系統通知郵件信箱是: $Email" read -p "以上輸入是否正確? 正確請輸入 yes 或 YES,否則按任一鍵繼續輸入:" yn clear done ETH0=$(ls /proc/net/dev_snmp6 |awk '{ print $1 }' |sed -n '1p') ETH1=$(ls /proc/net/dev_snmp6 |awk '{ print $1 }' |sed -n '2p') DATE=$(date "+%Y%m%d%H") rm -rf /etc/netplan/* cat > /etc/netplan/00-installer-config.yaml << EOF # This is the network config written by 'subiquity' network: ethernets: $ETH0: dhcp4: false addresses: [$IPaddress/29] # gateway4: nameservers: addresses: [8.8.8.8, 168.95.192.1, 1.1.1.1, 168.95.1.1] version: 2 EOF if [ "$ETH1" != "" ] && [ "$ETH1" != "lo" ]; then cat >> /etc/netplan/00-installer-config.yaml << EOF # This is the network config written by 'subiquity' network: ethernets: $ETH1: dhcp4: false addresses: [192.168.1.1/24] # dhcp6: false # addresses: [fc01:192:168:1::1/64] version: 2 EOF fi timedatectl set-timezone Asia/Taipei hostnamectl set-hostname $HostName cp -arf /etc/hosts /etc/hosts-$DATE cat >> /etc/hosts << EOF $IPaddress $HostName EOF cp -arf /etc/ppp/peers/provider /etc/ppp/peers/provider-$DATE cat > /etc/ppp/peers/provider << EOF user "$AdslName" plugin rp-pppoe.so $ETH0 noipdefault defaultroute hide-password lcp-echo-interval 20 lcp-echo-failure 3 noauth persist maxfail 0 mtu 1452 mru 1452 noaccomp default-asyncmap +ipv6 ipv6cp-use-ipaddr linkname pppoe EOF cat > /etc/ppp/peers/dsl-provider << EOF user "$AdslName" pty "/usr/sbin/pppoe -I $ETH0 -T 80 -m 1452" noipdefault usepeerdns defaultroute hide-password lcp-echo-interval 20 lcp-echo-failure 3 connect /bin/true noauth persist mtu 1492 noaccomp default-asyncmap +ipv6 ipv6cp-use-ipaddr EOF chmod 640 /etc/ppp/peers/dsl-provider cp -arf /etc/ppp/pap-secrets /etc/ppp/pap-secrets-$DATE cat >> /etc/ppp/pap-secrets << EOF $AdslName * "$Password" * EOF cat > /usr/lib/systemd/system/adsl-ppp.service << EOF [Unit] BindsTo=sys-subsystem-net-devices-$ETH0.device After=sys-subsystem-net-devices-$ETH0.device [Service] ExecStartPre=/sbin/ip link set mtu 1508 dev $ETH0 #ExecStartPre=/sbin/ip link set up dev $ETH0 ExecStart=/usr/sbin/pppd call dsl-provider Type=forking SuccessExitStatus=5 PIDFile=/run/ppp0.pid [Install] WantedBy=sys-subsystem-net-devices-$ETH0.device EOF cat > /usr/sbin/autoconnect.sh << EOF #!/bin/bash /usr/bin/pon dsl-provider sync;sync /usr/bin/sleep 5 /usr/bin/firewall.sh EOF chmod a+x /usr/sbin/autoconnect.sh cat >> /var/spool/cron/crontabs/root << EOF */1 * * * * /usr/sbin/ifconfig ppp0 > /dev/null 2>&1 || /usr/sbin/autoconnect.sh > /dev/null 2>&1 EOF systemctl daemon-reload systemctl enable adsl-ppp.service sync;sync;reboot exit 0