Update: Install ipk (#14)
* Update: install ipk * Update cattools.sh * Update cattools.sh * Update cattools.sh * Update cattools.sh * Update cattools.sh * Update cattools.sh * Update cattools.sh * Update cattools.sh
This commit is contained in:
124
cattools.sh
124
cattools.sh
@@ -1245,9 +1245,10 @@ utilities_menu() {
|
|||||||
echo "2. Tailscale 配置"
|
echo "2. Tailscale 配置"
|
||||||
echo "3. LeigodAcc 配置"
|
echo "3. LeigodAcc 配置"
|
||||||
echo "4. TTYD 免密配置(危险)"
|
echo "4. TTYD 免密配置(危险)"
|
||||||
echo "5. SSL/TLS 证书上传配置"
|
echo "5. 导入 IPK 软件包"
|
||||||
echo "6. 重置 root 密码"
|
echo "6. SSL/TLS 证书上传配置"
|
||||||
echo "7. 重置系统"
|
echo "7. 重置 root 密码"
|
||||||
|
echo "8. 重置系统"
|
||||||
echo ""
|
echo ""
|
||||||
echo "0. 返回 Cattools 主菜单"
|
echo "0. 返回 Cattools 主菜单"
|
||||||
echo
|
echo
|
||||||
@@ -1257,9 +1258,10 @@ utilities_menu() {
|
|||||||
2) configure_tailscale ;;
|
2) configure_tailscale ;;
|
||||||
3) configure_leigodacc ;;
|
3) configure_leigodacc ;;
|
||||||
4) configure_ttyd ;;
|
4) configure_ttyd ;;
|
||||||
5) manual_deploy_uhttpd_ssl_cert ;;
|
5) install_ipk ;;
|
||||||
6) reset_root_password ;;
|
6) manual_deploy_uhttpd_ssl_cert ;;
|
||||||
7) openwrt_firstboot ;;
|
7) reset_root_password ;;
|
||||||
|
8) openwrt_firstboot ;;
|
||||||
0) menu ;;
|
0) menu ;;
|
||||||
*) echo "[ERROR] 无效选项,请重试" && utilities_menu ;;
|
*) echo "[ERROR] 无效选项,请重试" && utilities_menu ;;
|
||||||
esac
|
esac
|
||||||
@@ -1511,6 +1513,116 @@ configure_leigodacc() {
|
|||||||
sh -c "$(curl -fsSL https://service.miaoer.xyz/openwrt-leigodacc-manager/leigod.sh)"
|
sh -c "$(curl -fsSL https://service.miaoer.xyz/openwrt-leigodacc-manager/leigod.sh)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
install_ipk() {
|
||||||
|
echo
|
||||||
|
echo "[INFO] 检测 /tmp/upload/ 目录中的 IPK 文件..."
|
||||||
|
lan_ip=$(uci get network.lan.ipaddr)
|
||||||
|
echo "[INFO] 文件上传访问链接: http://$lan_ip/cgi-bin/luci/admin/system/filetransfer"
|
||||||
|
ipk_files=$(ls /tmp/upload/*.ipk 2>/dev/null)
|
||||||
|
|
||||||
|
if [ -n "$ipk_files" ]; then
|
||||||
|
echo "[INFO] 检测到以下 IPK 文件已上传到 /tmp/upload/:"
|
||||||
|
echo "$ipk_files"
|
||||||
|
echo
|
||||||
|
echo "请选择操作: "
|
||||||
|
echo "1. 立即安装"
|
||||||
|
echo "2. 保留,稍后安装"
|
||||||
|
echo "3. 移除文件"
|
||||||
|
read -p "请输入选项 (1/2/3): " choice
|
||||||
|
|
||||||
|
case $choice in
|
||||||
|
1)
|
||||||
|
echo "[INFO] 正在安装 IPK 文件..."
|
||||||
|
install_ipk_files "$ipk_files"
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
echo "[INFO] 已选择稍后安装,请继续上传其他 IPK 文件"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
echo "[INFO] 移除 IPK 文件..."
|
||||||
|
rm -f /tmp/upload/*.ipk
|
||||||
|
echo "[INFO] 已移除所有 IPK 文件"
|
||||||
|
install_ipk
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "[ERROR] 无效选项"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
echo "[INFO] 你可以通过 IPK 文件/URL 导入 IPK 文件安装"
|
||||||
|
read -p "请输入 IPK 文件路径或多个 URL (用英文逗号 ',' 分隔不能使用中文逗号','分割!): " input
|
||||||
|
|
||||||
|
if [[ -z "$input" ]]; then
|
||||||
|
echo "[INFO] 没有输入 URL,等待上传 IPK 文件..."
|
||||||
|
sleep 5 # 等待文件上传
|
||||||
|
ipk_files=$(ls /tmp/upload/*.ipk 2>/dev/null)
|
||||||
|
|
||||||
|
if [ -n "$ipk_files" ]; then
|
||||||
|
echo "[INFO] 检测到本地文件: $ipk_files"
|
||||||
|
install_ipk_manager "$ipk_files"
|
||||||
|
else
|
||||||
|
echo "[ERROR] 未检测到任何 IPK 文件,请重新尝试。"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ -f "$input" ]]; then
|
||||||
|
echo "[INFO] 检测到本地文件: $input"
|
||||||
|
install_ipk_manager "$input"
|
||||||
|
else
|
||||||
|
urls=$(echo "$input" | tr ',' ' ')
|
||||||
|
echo "[INFO] 检测到多个 URL: $urls"
|
||||||
|
echo
|
||||||
|
|
||||||
|
for url in $urls; do
|
||||||
|
filename=$(basename "$url")
|
||||||
|
|
||||||
|
if [[ "$filename" == *kmod* ]]; then
|
||||||
|
echo "[Warn] 文件名包含 'kmod',可能会出现兼容性问题: $filename"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "[INFO] 正在下载: $url"
|
||||||
|
wget -P /tmp/upload/ "$url"
|
||||||
|
done
|
||||||
|
|
||||||
|
ipk_files=$(ls /tmp/upload/*.ipk 2>/dev/null)
|
||||||
|
if [ -n "$ipk_files" ]; then
|
||||||
|
install_ipk_manager "$ipk_files"
|
||||||
|
else
|
||||||
|
echo "[ERROR] 无法下载任何 IPK 文件,请检查 URL 是否可以访问并下载"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_ipk_manager() {
|
||||||
|
files="$1"
|
||||||
|
|
||||||
|
echo "[INFO] 安装前需要更新索引文件,获取在线软件源避免安装错误解决依赖问题"
|
||||||
|
echo "1. 确认(执行 apply_repo 配置软件源并 opkg update)"
|
||||||
|
echo "0. 尝试(仅 opkg update)"
|
||||||
|
read -p "请输入选项 (1/0): " confirm_net
|
||||||
|
|
||||||
|
if [ "$confirm_net" == "1" ]; then
|
||||||
|
echo "[INFO] 正在配置软件源并更新软件包索引..."
|
||||||
|
apply_repo
|
||||||
|
elif [ "$confirm_net" == "0" ]; then
|
||||||
|
echo "[INFO] 尝试仅更新软件包索引..."
|
||||||
|
opkg update
|
||||||
|
else
|
||||||
|
echo "[ERROR] 无效选择"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
for file in $files; do
|
||||||
|
echo "[INFO] 安装 IPK 文件: $file"
|
||||||
|
opkg install "$file" || echo "[ERROR] 安装 $file 时出错,请检查!"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# TTYD (NOT SAFETY)
|
# TTYD (NOT SAFETY)
|
||||||
configure_ttyd() {
|
configure_ttyd() {
|
||||||
if ! opkg list_installed | grep -q "luci-app-ttyd" || ! opkg list_installed | grep -q "ttyd"; then
|
if ! opkg list_installed | grep -q "luci-app-ttyd" || ! opkg list_installed | grep -q "ttyd"; then
|
||||||
|
|||||||
Reference in New Issue
Block a user