159 lines
3.8 KiB
Bash
159 lines
3.8 KiB
Bash
#!/bin/bash
|
|
###
|
|
# @Author: miaoermua
|
|
# @Date: 2023-12-12 16:59:27
|
|
# @LastEditors: miaoermua
|
|
# @LastEditTime: 2023-12-12 17:33:11
|
|
# @FilePath: \undefinedd:\Git\cattools\cattools.sh
|
|
###
|
|
|
|
default_ip="192.168.1.4"
|
|
release="catwrt_release"
|
|
amd64_repo_url="https://fastly.jsdelivr.net/gh/miaoermua/cattools@main/repo_lists/amd64/distfeeds.conf"
|
|
amd64_efi_boot_sysup="https://github.com/miaoermua/CatWrt/releases/download/v23.8/CatWrt.v23.8.x86_64-squashfs-combined-efi.img.gz"
|
|
amd64_bios_boot_sysup="https://github.com/miaoermua/CatWrt/releases/download/v23.8/CatWrt.v23.8.x86_64-squashfs-combined.img.gz"
|
|
|
|
# Check OpenWrt
|
|
|
|
if [ $(id -u) != "0" ]; then
|
|
echo "Error: You must be root to run this script, please use root user"
|
|
exit 1
|
|
fi
|
|
|
|
release=$(cat /etc/openwrt_release)
|
|
|
|
if [[ $release =~ "OpenWrt" ]]; then
|
|
echo "$(date) - Starting CatWrt Network Diagnostics"
|
|
else
|
|
echo "Abnormal system environment..."
|
|
echo " "
|
|
exit 1
|
|
fi
|
|
|
|
setip(){
|
|
read -p "请输入 IP(默认为 $default_ip): " input_ip
|
|
if [ -z $input_ip ]; then
|
|
input_ip=$default_ip
|
|
fi
|
|
|
|
uci set network.lan.ipaddr=$input_ip
|
|
uci commit network
|
|
/etc/init.d/network restart
|
|
|
|
echo "默认IP已设置为 $input_ip"
|
|
}
|
|
|
|
catwrt_update(){
|
|
/usr/bin/catwrt-update
|
|
}
|
|
|
|
catwrt_network_diagnostics(){
|
|
/usr/bin/catnd
|
|
}
|
|
|
|
use_repo(){
|
|
echo "你需要同意 CatWrt 软件源用户协议,请确认是否继续(y/n)"
|
|
read -t 10 -p "您有 10 秒选择,输入 y 继续,其他退出:" confirm
|
|
[ "$confirm" != y ] && return
|
|
|
|
arch=$(uname -m)
|
|
|
|
if [ "$arch" = "x86_64" ]; then
|
|
curl -o /etc/opkg/distfeeds.conf $amd64_repo_url
|
|
rm -f /var/lock/opkg.lock
|
|
opkg update
|
|
echo "UPDATE!"
|
|
else
|
|
echo "非 x86_64 架构,跳过"
|
|
fi
|
|
|
|
}
|
|
|
|
catwrt_sysupgrade(){
|
|
|
|
# 检测架构
|
|
if [[ $(uname -m) =~ "x86_64" ]]; then
|
|
echo "CatWrt ARCH: x86_64(AMD64)"
|
|
|
|
# 检测磁盘空间
|
|
size=$(fdisk -l /dev | grep "Disk /dev" | awk '{print $5}')
|
|
size=${size%\*}
|
|
if [[ $size > 820 ]]; then
|
|
echo "磁盘空间超过限制,升级中止"
|
|
exit
|
|
fi
|
|
|
|
# 检测EFI分区
|
|
if [[ -b /dev/sda128 || -b /dev/vda128 ]]; then
|
|
efi_part=true
|
|
else
|
|
efi_part=false
|
|
fi
|
|
|
|
# 用户确认
|
|
echo "将升级系统,存在风险,请先确认(y/n), 30秒后默认n"
|
|
read -t 30 confirm
|
|
confirm=${confirm:-n}
|
|
|
|
# 执行升级
|
|
if [[ $confirm =~ [Yy] ]]; then
|
|
if [[ $efi_part == true ]]; then
|
|
sysupgrade -v $amd64_efi_boot_sysup
|
|
else
|
|
sysupgrade -v $amd64_bios_boot_sysup
|
|
fi
|
|
else
|
|
echo "用户已取消升级"
|
|
fi
|
|
|
|
else
|
|
echo "非x86_64架构,跳过升级"
|
|
fi
|
|
}
|
|
|
|
while :; do
|
|
clear
|
|
echo "CatTools"
|
|
echo "---------------------------"
|
|
echo "1. Set IPv4 设置默认IP"
|
|
echo "2. Check Update 检查系统更新"
|
|
echo "3. network diagnostics 网络诊断"
|
|
echo "4. use repo 使用软件源"
|
|
echo "5. sysupgrade 升级系统"
|
|
echo "0. Exit 退出脚本"
|
|
echo "请选择:"
|
|
choice=""
|
|
while [ -z $choice ]; do
|
|
read choice
|
|
done
|
|
|
|
case $choice in
|
|
1)
|
|
setip
|
|
;;
|
|
2)
|
|
catwrt_update
|
|
;;
|
|
3)
|
|
catwrt_network_diagnostics
|
|
;;
|
|
4)
|
|
use_repo
|
|
;;
|
|
5)
|
|
catwrt_sysupgrade
|
|
;;
|
|
0)
|
|
echo "Exit CatTools 退出脚本..."
|
|
break
|
|
;;
|
|
*)
|
|
echo "无效的选择, 请重新输入"
|
|
;;
|
|
esac
|
|
|
|
sleep 1
|
|
done
|
|
|
|
echo "结束!"
|