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 "3. LeigodAcc 配置"
|
||||
echo "4. TTYD 免密配置(危险)"
|
||||
echo "5. SSL/TLS 证书上传配置"
|
||||
echo "6. 重置 root 密码"
|
||||
echo "7. 重置系统"
|
||||
echo "5. 导入 IPK 软件包"
|
||||
echo "6. SSL/TLS 证书上传配置"
|
||||
echo "7. 重置 root 密码"
|
||||
echo "8. 重置系统"
|
||||
echo ""
|
||||
echo "0. 返回 Cattools 主菜单"
|
||||
echo
|
||||
@@ -1257,9 +1258,10 @@ utilities_menu() {
|
||||
2) configure_tailscale ;;
|
||||
3) configure_leigodacc ;;
|
||||
4) configure_ttyd ;;
|
||||
5) manual_deploy_uhttpd_ssl_cert ;;
|
||||
6) reset_root_password ;;
|
||||
7) openwrt_firstboot ;;
|
||||
5) install_ipk ;;
|
||||
6) manual_deploy_uhttpd_ssl_cert ;;
|
||||
7) reset_root_password ;;
|
||||
8) openwrt_firstboot ;;
|
||||
0) menu ;;
|
||||
*) echo "[ERROR] 无效选项,请重试" && utilities_menu ;;
|
||||
esac
|
||||
@@ -1511,6 +1513,116 @@ configure_leigodacc() {
|
||||
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)
|
||||
configure_ttyd() {
|
||||
if ! opkg list_installed | grep -q "luci-app-ttyd" || ! opkg list_installed | grep -q "ttyd"; then
|
||||
|
||||
Reference in New Issue
Block a user