├── Linux.sh ├── README.md ├── linuxtool.png └── sd3ROMZU.webp /Linux.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 定义颜色代码 4 | RED='\033[0;31m' 5 | GREEN='\033[0;32m' 6 | YELLOW='\033[0;33m' 7 | BLUE='\033[0;34m' 8 | MAGENTA='\033[0;35m' 9 | CYAN='\033[0;36m' 10 | WHITE='\033[0;37m' 11 | RESET='\033[0m' 12 | 13 | 14 | # 获取服务器IP地址 15 | server_ip=$(hostname -I) 16 | 17 | uptime=$(uptime -p) 18 | uptime_cn=$(echo $uptime | sed 's/up/已运行/; s/hour/时/; s/minutes/分/; s/days/天/; s/months/月/') 19 | 20 | 21 | 22 | show_menu() { 23 | clear 24 | local greeting 25 | greeting=$(get_greeting) 26 | echo -e " 27 | =================================================== 28 | ✪ 工具名称:${RED}亚洲云Linux工具${RESET} 29 | ✪ 工具版本:${GREEN}V1.0.4.2${RESET} 30 | ✪ 服务器IP:$server_ip 31 | ✪ 运行时间:$uptime_cn 32 | --------------------[综合菜单]--------------------- 33 | 34 | 1. 系统操作菜单(修改密码、SSH端口、更新系统等) 35 | 2. 网络操作菜单(开/关ping、检测UDP、绑定IP等) 36 | 3. 文件操作菜单(挂载硬盘、远程下载文件等) 37 | 4. 宝塔面板菜单(挂载硬盘、一键安装宝塔产品) 38 | 5. 宿主机菜单(云服务器不要尝试开启虚拟化) 39 | 40 | --------------------[快捷功能]--------------------- 41 | 42 | 6. BBR一键脚本 43 | 7. 回程路由可视化脚本 44 | 8. IP质量检测脚本 45 | 9. 流媒体解锁检测脚本 46 | 10. 融合怪VPS测试一键脚本 47 | 11. Linux系统一键换源(默认版) 48 | 12. 大陆服务器一键安装docker 49 | 13. 通用一键安装宝塔最新正式版 50 | 14. 一键安装1panel面板(国内服务器请先换源) 51 | 15. 一键TCP窗口大带宽调优 52 | q. 退出脚本 53 | 54 | --------------------[服务器推荐]--------------------- 55 | 56 | ${CYAN}亚洲云 资质齐全老商家 全球20+机房高防大带宽服务器 57 | 拥有IDC/ISP/ICP等资质,300M大带宽服务器免费领取 58 | 官网:https://www.asiayun.com ${RESET} 59 | 60 | =================================================== 61 | $greeting 62 | " 63 | } 64 | 65 | 66 | 67 | # 系统操作菜单 68 | system_menu() { 69 | clear 70 | echo "=== 系统操作菜单 ===" 71 | echo "1. 一键重启服务器" 72 | echo "2. 一键修改密码" 73 | echo "3. 一键同步上海时间" 74 | echo "4. 一键修改SSH端口" 75 | echo "5. 一键修改DNS" 76 | echo "6. 一键开启/关闭SSH登录" 77 | echo "7. 一键更新CentOS最新版系统" 78 | echo "8. 一键更新Ubuntu最新版系统" 79 | echo "9. 一键更新Debian最新版系统" 80 | echo "10. 一键更换CentOS yum源" 81 | echo "11. 一键更换Ubuntu apt源" 82 | echo "12. 一键更换Debian apt源" 83 | echo "13. 一键创建子用户或管理员" 84 | echo "14. 一键查看当前与服务器连接的IP" 85 | echo "15. 一键修改服务器主机名" 86 | echo "16. 一键更换CentOS8 stream仓库源" 87 | echo "17. 一键查看SSH登录成功的IP地址" 88 | echo "q. 返回上级菜单" 89 | echo "====================" 90 | } 91 | 92 | 93 | 94 | # 网络操作菜单 95 | network_menu() { 96 | clear 97 | echo "=== 网络操作菜单 ===" 98 | echo "1. 一键重启网卡" 99 | echo "2. 一键开启/关闭Ping" 100 | echo "3. 一键绑定附加IP" 101 | echo "4. 一键查看服务器地理位置" 102 | echo "5. 一键查看服务器IP原生地址" 103 | echo "6. 一键查看服务器配置信息" 104 | echo "7. 一键检测服务器是否屏蔽UDP" 105 | echo "8. 一键VPS的IP映射至独立服务器" 106 | echo "9. 一键关闭VPS的IP映射" 107 | echo "10. 一键开启四层端口转发" 108 | echo "11. 一键关闭四层端口转发" 109 | echo "12. 一键查看服务器在使用的端口" 110 | echo "13. 一键查看什么IP在跑带宽" 111 | echo "q. 返回上级菜单" 112 | echo "====================" 113 | } 114 | 115 | 116 | 117 | # 文件传输菜单 118 | file_transfer_menu() { 119 | clear 120 | echo "=== 文件传输菜单 ===" 121 | echo "1. 一键上传文件到远程服务器" 122 | echo "2. 一键从远程服务器下载文件" 123 | echo "3. 一键查看所有硬盘分区信息(挂载硬盘前建议查看)" 124 | echo "4. 一键自定义挂载数据盘" 125 | echo "5. 一键自定义卸载数据盘" 126 | echo "6. 一键自定义格式化数据盘" 127 | echo "7. 一键修复硬盘分区超级坏块" 128 | echo "8. 一键设置开机启动脚本" 129 | echo "9. 一键查询关键词文件内容(可用于审查违规)" 130 | echo "10. 一键查看SSH历史输入命令" 131 | echo "11. 一键清空SSH历史输入命令" 132 | echo "q. 返回上级菜单" 133 | echo "====================" 134 | } 135 | 136 | 137 | 138 | # 根据当前时间返回问候语 139 | get_greeting() { 140 | local hour=$(date +"%H") 141 | case $hour in 142 | 1|2|3|4|5|6|7|8|9|10|11) 143 | echo "上午好!欢迎使用亚洲云linux工具" 144 | ;; 145 | 12|13|14|15|16|17|18) 146 | echo "下午好!欢迎使用亚洲云linux工具" 147 | ;; 148 | *) 149 | echo "晚上好!欢迎使用亚洲云linux工具" 150 | ;; 151 | esac 152 | } 153 | 154 | 155 | 156 | # 函数:启动 iftop 157 | start_iftop() { 158 | echo "启动 iftop,按 CTRL+C 退出..." 159 | sudo iftop 160 | } 161 | 162 | 163 | 164 | # 函数:检查并安装 iftop 165 | check_and_install_iftop() { 166 | if ! command -v iftop &> /dev/null; then 167 | echo -e "${GREEN}正在检查 iftop 是否已安装...${NC}" 168 | # 检测Linux发行版并安装 iftop 169 | if [ -f /etc/debian_version ]; then 170 | echo -e "${GREEN}检测到 Debian/Ubuntu 系统,正在安装 iftop...${NC}" 171 | sudo apt-get update && sudo apt-get install -y iftop 172 | elif [ -f /etc/centos-release ]; then 173 | echo -e "${GREEN}检测到 CentOS 系统,正在安装 iftop...${NC}" 174 | sudo yum install -y epel-release # 确保有 EPEL 源 175 | sudo yum install -y iftop 176 | else 177 | echo -e "${RED}不支持的系统,无法安装 iftop。${NC}" 178 | fi 179 | fi 180 | } 181 | 182 | 183 | 184 | # 查看历史记录 185 | view_history() { 186 | echo "查看历史记录..." 187 | if [ -f ~/.bash_history ]; then 188 | cat ~/.bash_history 189 | else 190 | echo "没有找到历史记录文件。" 191 | fi 192 | exit 0 193 | } 194 | 195 | #BBR一键脚本 196 | bbryj(){ 197 | # 使用无限循环来不断地询问用户是否需要继续安装 198 | while true; do 199 | # 提示用户输入Y(Y/N),并将输入值存储在变量answer中 200 | read -p "Debian类系统无需安装,默认自带,如需继续安装请输入Y(Y/N) " answer 201 | # 使用case语句根据用户的输入执行相应的操作 202 | case $answer in 203 | # 如果用户输入Y或y,则下载并执行tcp.sh脚本 204 | [Yy]* ) wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh;; 205 | # 如果用户输入N或n,则跳出循环 206 | [Nn]* ) break;; 207 | # 如果用户输入其他字符,则默认执行下载并执行tcp.sh脚本的操作 208 | * ) wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh;; 209 | esac 210 | done 211 | } 212 | 213 | #流媒体检测脚本 214 | lmtjc(){ 215 | bash <(curl -L -s https://raw.githubusercontent.com/lmc999/RegionRestrictionCheck/main/check.sh) 216 | } 217 | 218 | # 清空历史记录 219 | clear_history() { 220 | # 使用sed命令清空.bash_history文件 221 | sed -i '' 1d ~/.bash_history 222 | # 确保文件是空的 223 | echo "" > ~/.bash_history 224 | echo "sed:已经读取 1d:" 225 | echo "历史记录已清空。" 226 | } 227 | 228 | 229 | 230 | # 定义函数:安装 dig 命令 231 | install_dig() { 232 | echo "正在检查 dig 命令..." 233 | if ! command -v dig &> /dev/null; then 234 | echo "dig 命令未找到,正在安装..." 235 | case $(uname -s) in 236 | Linux) 237 | if [ -x "$(command -v apt-get)" ]; then 238 | sudo apt-get update && sudo apt-get install -y dnsutils 239 | elif [ -x "$(command -v yum)" ]; then 240 | sudo yum install bind-utils 241 | elif [ -x "$(command -v dnf)" ]; then 242 | sudo dnf install bind-utils 243 | else 244 | echo "不支持的Linux发行版" 245 | exit 1 246 | fi 247 | ;; 248 | *) 249 | echo "不支持的操作系统" 250 | exit 1 251 | ;; 252 | esac 253 | else 254 | echo "dig 命令已安装." 255 | fi 256 | } 257 | 258 | 259 | 260 | # 定义一个函数来检测8.8.8.8的UDP DNS解析 261 | check_dns_udp() { 262 | echo "正在测试8.8.8.8的UDP DNS解析..." 263 | if dig @8.8.8.8 -p 53 google.com > /dev/null; then 264 | echo "8.8.8.8的UDP DNS解析正常 UDP正常。" 265 | else 266 | echo "8.8.8.8的UDP DNS解析失败 UDP屏蔽。" 267 | fi 268 | } 269 | 270 | 271 | 272 | # 更新YUM仓库源 273 | update_repo() { 274 | echo "正在更新YUM仓库源到阿里云镜像..." 275 | # 使用sed命令修改仓库配置文件 276 | sed -e "s|^mirrorlist=|#mirrorlist=|g" -e "s|^#baseurl=http://mirror.centos.org/\$contentdir/|baseurl=https://mirrors.aliyun.com/centos-vault/|g" -i.bak /etc/yum.repos.d/CentOS-Stream-*.repo 277 | 278 | # 刷新YUM缓存 279 | yum makecache 280 | echo "YUM仓库源更新完成。" 281 | } 282 | 283 | 284 | # 检测操作系统并设置日志文件路径 285 | log_file_path="" 286 | if [[ -f /etc/os-release ]]; then 287 | . /etc/os-release 288 | case "$ID" in 289 | centos) 290 | log_file_path="/var/log/secure" 291 | ;; 292 | ubuntu|debian) 293 | log_file_path="/var/log/auth.log" 294 | ;; 295 | *) 296 | echo "不支持的操作系统" 297 | exit 1 298 | ;; 299 | esac 300 | else 301 | echo "无法检测到操作系统" 302 | exit 1 303 | fi 304 | 305 | 306 | 307 | # 查看登录成功的IP 308 | show_login_ips() { 309 | # 从正确的日志文件中提取登录成功的IP地址 310 | grep 'sshd.*Accepted' "$log_file_path" | awk '{print $11}' | sort | uniq 311 | } 312 | 313 | # 修复硬盘分区坏块 314 | repair_badblocks() { 315 | read -p "请输入要修复坏块的硬盘分区(例如:/dev/home):" partition 316 | echo "开始修复硬盘分区坏块..." 317 | xfs_repair $partition -L 318 | echo "修复完成!" 319 | } 320 | 321 | 322 | 323 | # 审查文件内容关键词(自定义目录搜索) 324 | review_files_custom() { 325 | echo "请输入要搜索的目录路径:" 326 | read directory_path 327 | if [ -d "$directory_path" ]; then 328 | echo "请输入关键词:" 329 | read keyword 330 | echo "开始搜索关键词 '$keyword' 在目录 '$directory_path' 中..." 331 | grep -rl "$keyword" "$directory_path" 332 | else 333 | echo "输入的路径不是有效的目录,请重新输入。" 334 | fi 335 | } 336 | 337 | 338 | 339 | # 修改主机名的函数 340 | change_hostname() { 341 | local new_hostname 342 | read -p "请输入新的主机名:" new_hostname 343 | if [ -n "$new_hostname" ]; then 344 | sudo hostnamectl set-hostname "$new_hostname" 345 | if [ $? -eq 0 ]; then 346 | echo "主机名已成功修改为:$new_hostname" 347 | else 348 | echo "修改主机名失败,请检查输入是否有误。" 349 | fi 350 | else 351 | echo "输入的主机名不能为空。" 352 | fi 353 | } 354 | 355 | 356 | 357 | # 定义函数:关闭 SELinux 358 | disable_selinux() { 359 | # 检查当前 SELinux 的状态 360 | sestatus=$(sestatus | awk '{print $3}') 361 | 362 | if [[ $sestatus == "enabled" ]]; then 363 | echo "当前 SELinux 状态为已启用。" 364 | echo "正在关闭 SELinux..." 365 | 366 | # 临时禁用 SELinux 367 | setenforce 0 368 | 369 | # 检查 SELinux 是否成功禁用 370 | if [[ $(sestatus | awk '{print $3}') == "disabled" ]]; then 371 | echo "SELinux 已成功禁用。" 372 | else 373 | echo "无法禁用 SELinux。" 374 | fi 375 | else 376 | echo "当前 SELinux 状态为已禁用。" 377 | fi 378 | } 379 | 380 | 381 | # 一键四层转发函数 382 | forwarding() { 383 | echo "请输入转发端口:" 384 | read source_port 385 | echo "请输入目标端口:" 386 | read destination_port 387 | echo "正在进行四层转发,转发端口为 $source_port,目标端口为 $destination_port ..." 388 | # 使用iptables进行转发 389 | iptables -t nat -A PREROUTING -p tcp --dport $source_port -j DNAT --to-destination 目标IP:$destination_port 390 | echo "转发已完成!" 391 | } 392 | 393 | 394 | 395 | # 定义函数:用户自定义脚本 396 | custom_script() { 397 | read -p "请输入自定义脚本的内容: " script_content 398 | 399 | # 获取当前用户的home目录 400 | home_dir=$(eval echo ~$USER) 401 | 402 | # 将用户输入的脚本内容保存到文件中 403 | echo "$script_content" > "$home_dir/my.sh" 404 | chmod +x "$home_dir/my.sh" 405 | 406 | echo "自定义脚本已保存为 my.sh。" 407 | } 408 | 409 | # 一键关闭四层转发函数 410 | disable_forwarding() { 411 | echo "正在关闭四层转发..." 412 | # 使用iptables删除转发规则 413 | iptables -t nat -F 414 | echo "四层转发已关闭!" 415 | } 416 | 417 | # 检查是否已经取消注释net.ipv4.ip_forward=1 418 | check_ip_forwarding() { 419 | if grep -q "^net.ipv4.ip_forward=1" /etc/sysctl.conf; then 420 | echo "net.ipv4.ip_forward=1 已经在 /etc/sysctl.conf 中取消注释" 421 | else 422 | # 如果未取消注释,则添加配置并重新加载sysctl配置 423 | echo "net.ipv4.ip_forward=1 未在 /etc/sysctl.conf 中取消注释" 424 | echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf 425 | sudo sysctl -p 426 | echo "已添加 net.ipv4.ip_forward=1 并重新加载sysctl配置" 427 | fi 428 | } 429 | 430 | # 关闭端口转发函数 431 | close_port_forwarding() { 432 | sudo iptables -t nat -F 433 | echo "IP映射已成功关闭" 434 | } 435 | 436 | # 设置端口转发函数 437 | setup_port_forwarding() { 438 | read -p "请输入VPS的IP地址: " vps_ip 439 | read -p "请输入VPS上要转发的端口: " vps_port 440 | read -p "请输入独立服务器的IP地址: " server_ip 441 | read -p "请输入独立服务器上要映射到的端口: " server_port 442 | 443 | # 执行端口转发设置 444 | iptables -t nat -A PREROUTING -p tcp --dport $vps_port -j DNAT --to-destination $server_ip:$server_port 445 | iptables -t nat -A POSTROUTING -p tcp -d $server_ip --dport $server_port -j SNAT --to-source $vps_ip 446 | 447 | echo "端口转发设置成功: $vps_ip:$vps_port -> $server_ip:$server_port" 448 | } 449 | 450 | 451 | 452 | # 挂载数据盘 453 | mount_data_disk() { 454 | # 确定数据盘设备名 455 | read -p "请输入数据盘设备名[默认:/dev/vdb1]: " disk_device 456 | disk_device=${disk_device:-"/dev/vdb1"} 457 | 458 | # 确定挂载点目录 459 | read -p "请输入挂载点目录[默认:/data]: " mount_point 460 | mount_point=${mount_point:-"/data"} 461 | 462 | # 检查挂载点目录是否存在 463 | if [ ! -d "$mount_point" ]; then 464 | # 挂载点目录不存在,创建目录 465 | sudo mkdir "$mount_point" 466 | fi 467 | 468 | # 检查数据盘是否已经被挂载 469 | if grep -qs "$disk_device" /proc/mounts; then 470 | echo "数据盘 $disk_device 已经被挂载" 471 | return 472 | fi 473 | 474 | # 检查数据盘是否存在 475 | if [ ! -e "$disk_device" ]; then 476 | echo "数据盘 $disk_device 不存在" 477 | return 478 | fi 479 | 480 | # 挂载数据盘 481 | sudo mount "$disk_device" "$mount_point" 482 | echo "数据盘 $disk_device 成功挂载到 $mount_point" 483 | 484 | # 将数据盘添加到 /etc/fstab 实现开机自动挂载 485 | echo "$mount_path $mount_point ext4 defaults 0 2" | sudo tee -a /etc/fstab 486 | 487 | echo "数据盘已成功挂载到 $mount_point,并已设置为开机自动挂载。" 488 | } 489 | 490 | # 尝试安装netstat 491 | install_netstat() { 492 | if ! command -v netstat &> /dev/null; then 493 | echo "netstat 未安装,正在尝试安装..." 494 | if [[ "$ID" == "ubuntu" || "$ID" == "debian" ]]; then 495 | apt-get update && apt-get install -y net-tools 496 | elif [[ "$ID" == "centos" || "$ID" == "rhel" ]]; then 497 | yum install -y net-tools 498 | else 499 | echo "不支持的操作系统" 500 | exit 1 501 | fi 502 | fi 503 | } 504 | 505 | # 查看连接到本机的远程IP地址数量 506 | show_connected_ips_count() { 507 | install_netstat 508 | netstat -tn | awk '{print $5}' | grep -v 'Address' | cut -d: -f1 | sort | uniq -c | sort -nr 509 | # 可以根据需要修改端口号或状态 510 | } 511 | 512 | 513 | 514 | function toggle_ssh() { 515 | if [[ -f /etc/redhat-release ]]; then 516 | # CentOS 517 | if sudo systemctl is-active --quiet sshd; then 518 | sudo systemctl stop sshd 519 | sudo systemctl disable sshd 520 | echo "SSH登录已禁用" 521 | else 522 | sudo systemctl enable sshd 523 | sudo systemctl start sshd 524 | echo "SSH登录已启用" 525 | fi 526 | elif [[ -f /etc/lsb-release ]]; then 527 | # Ubuntu 528 | if sudo service ssh status | grep "running" >/dev/null; then 529 | sudo service ssh stop 530 | sudo systemctl disable ssh 531 | echo "SSH登录已禁用" 532 | else 533 | sudo systemctl enable ssh 534 | sudo service ssh start 535 | echo "SSH登录已启用" 536 | fi 537 | elif [[ -f /etc/debian_version ]]; then 538 | # Debian 539 | if sudo service ssh status | grep "running" >/dev/null; then 540 | sudo service ssh stop 541 | sudo systemctl disable ssh 542 | echo "SSH登录已禁用" 543 | else 544 | sudo systemctl enable ssh 545 | sudo service ssh start 546 | echo "SSH登录已启用" 547 | fi 548 | else 549 | echo "不支持的操作系统" 550 | fi 551 | } 552 | 553 | function disable_swap() { 554 | if [[ -f /etc/fstab ]]; then 555 | sudo sed -i '/swap/d' /etc/fstab 556 | sudo swapoff -a 557 | echo "SWAP已关闭" 558 | else 559 | echo "无法找到fstab文件" 560 | fi 561 | } 562 | 563 | 564 | 565 | # 卸载数据盘 566 | umount_data_disk() { 567 | # 确定挂载点目录 568 | read -p "请输入挂载点目录[默认:/data]: " mount_point 569 | mount_point=${mount_point:-"/data"} 570 | 571 | # 检查挂载点目录是否存在 572 | if [ ! -d "$mount_point" ]; then 573 | echo "挂载点目录 $mount_point 不存在" 574 | return 575 | fi 576 | 577 | # 检查挂载点目录是否被挂载 578 | if ! grep -qs "$mount_point" /proc/mounts; then 579 | echo "挂载点目录 $mount_point 未被挂载" 580 | return 581 | fi 582 | 583 | # 卸载数据盘 584 | sudo umount "$mount_point" 585 | echo "数据盘 $mount_point 成功卸载" 586 | } 587 | 588 | # 函数:创建用户并设置密码 589 | create_user() { 590 | read -p "请输入要创建的用户名: " username 591 | 592 | # 检查用户是否已存在 593 | if id "$username" &>/dev/null; then 594 | echo "用户 $username 已存在" 595 | else 596 | # 创建用户 597 | sudo useradd -m $username 598 | if [ $? -eq 0 ]; then 599 | echo "用户 $username 创建成功" 600 | sudo passwd $username 601 | 602 | # 询问是否将用户添加到sudo组 603 | read -p "是否要将用户 $username 设置为管理员(y/n): " add_sudo 604 | if [ "$add_sudo" == "y" ]; then 605 | sudo usermod -aG wheel $username 606 | echo "用户 $username 已设置为管理员" 607 | fi 608 | else 609 | echo "创建用户 $username 失败" 610 | fi 611 | fi 612 | } 613 | 614 | 615 | 616 | # 定义增加IP地址函数 617 | add_ip() { 618 | read -p "请输入要添加的IP地址:" ip 619 | read -p "请输入网关:" gateway 620 | read -p "请输入掩码:" netmask 621 | 622 | # 检查IP地址是否已经存在 623 | if ip addr show | grep -q $ip; then 624 | echo "IP地址已经存在,删除已存在的IP地址。" 625 | ip addr del $ip/$netmask dev eth0 626 | fi 627 | 628 | # 添加IP地址 629 | ip addr add $ip/$netmask dev eth0 630 | ip route add default via $gateway 631 | echo "IP地址添加成功。" 632 | 633 | # 将添加IP地址的命令添加到 /etc/rc.local 文件中 634 | echo "ip addr add $ip/$netmask dev eth0" >> /etc/rc.local 635 | echo "ip route add default via $gateway" >> /etc/rc.local 636 | 637 | # 提示用户重启网络接口或服务器 638 | echo "如果IP地址没有立即生效,请尝试重启网卡或重启服务器。" 639 | } 640 | 641 | # 定义函数用于格式化用户指定的数据硬盘 642 | format_disk() { 643 | read -p "请输入要格式化的数据硬盘设备名称(回车默认/dev/vdb1):" disk_name 644 | disk_name=${disk_name:-/dev/vdb1} 645 | 646 | # 检查硬盘是否存在 647 | if [ ! -b "$disk_name" ]; then 648 | echo "硬盘 $disk_name 不存在或不可用。" 649 | exit 1 650 | fi 651 | 652 | read -p "请输入文件系统类型(回车默认ext4):" fs_type 653 | fs_type=${fs_type:-ext4} 654 | 655 | # 确认操作 656 | read -p "您确定要格式化硬盘 $disk_name 为文件系统 $fs_type 吗?(y/n):" confirm 657 | if [ "$confirm" != "y" ]; then 658 | echo "取消操作。" 659 | exit 0 660 | fi 661 | 662 | # 格式化硬盘 663 | sudo mkfs.$fs_type $disk_name 664 | if [ $? -eq 0 ]; then 665 | echo "硬盘 $disk_name 成功格式化为文件系统 $fs_type。" 666 | else 667 | echo "无法格式化硬盘 $disk_name。" 668 | fi 669 | } 670 | 671 | 672 | 673 | # 函数:自定义设置并配置Swap空间 674 | function set_swap() { 675 | read -p "请输入SWAP大小(单位:GB): " swap_size 676 | 677 | if [[ ! $swap_size =~ ^[0-9]+$ ]]; then 678 | echo "无效的输入,请输入一个有效的数字" 679 | return 680 | fi 681 | 682 | if [[ -f /etc/fstab ]]; then 683 | sudo sed -i '/swap/d' /etc/fstab 684 | sudo swapoff -a 685 | 686 | if [[ -f /swapfile ]]; then 687 | sudo rm /swapfile 688 | fi 689 | 690 | sudo fallocate -l ${swap_size}G /swapfile 691 | sudo chmod 600 /swapfile 692 | sudo mkswap /swapfile 693 | sudo swapon /swapfile 694 | 695 | echo "/swapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab 696 | echo "SWAP已设置为 ${swap_size}GB" 697 | echo "SWAP设置已添加到 /etc/fstab,将在系统启动时自动启用" 698 | else 699 | echo "无法找到fstab文件" 700 | fi 701 | } 702 | 703 | 704 | # 函数:启用嵌套虚拟化 705 | function enable_nested_virtualization() { 706 | if [[ -f /sys/module/kvm_intel/parameters/nested ]]; then 707 | # Intel processor 708 | sudo modprobe -r kvm_intel 709 | sudo modprobe kvm_intel nested=1 710 | echo "已开启虚拟化" 711 | elif [[ -f /sys/module/kvm_amd/parameters/nested ]]; then 712 | # AMD processor 713 | sudo modprobe -r kvm_amd 714 | sudo modprobe kvm_amd nested=1 715 | echo "已开启虚拟化" 716 | else 717 | echo "不支持的处理器" 718 | fi 719 | } 720 | 721 | 722 | 723 | 724 | # 重启服务器 725 | restart_server() { 726 | read -p "确认要重启服务器吗?(y/n): " confirm 727 | if [[ $confirm == [yY] ]]; then 728 | echo "正在重启服务器..." 729 | # 在这里添加重启服务器的命令 730 | sudo reboot 731 | else 732 | echo "取消重启服务器" 733 | fi 734 | } 735 | 736 | # 一键修改密码 737 | change_password() { 738 | username=$(whoami) 739 | sudo passwd "$username" 740 | echo "密码已成功修改。" 741 | } 742 | 743 | # 函数:显示服务器地理位置 744 | show_server_location() { 745 | curl ipinfo.io 746 | } 747 | 748 | # 函数:显示服务器地理位置(中文) 749 | show_server_location2() { 750 | curl iplark.com 751 | } 752 | 753 | 754 | 755 | 756 | # 同步上海时间函数 757 | sync_shanghai_time() { 758 | install_ntpdate 759 | echo "正在同步上海时间..." 760 | sudo timedatectl set-timezone Asia/Shanghai 761 | sudo ntpdate cn.pool.ntp.org 762 | echo "时间同步完成。" 763 | } 764 | 765 | # 一键修改 SSH 端口 766 | change_ssh_port() { 767 | read -p "请输入新的 SSH 端口: " new_port 768 | sed -i "s/Port [0-9]*/Port $new_port/" /etc/ssh/sshd_config 769 | systemctl restart sshd 770 | echo "SSH 端口已修改为 $new_port" 771 | } 772 | 773 | # 函数:一键修改DNS1和DNS2 774 | function set_dns() { 775 | read -p "请输入新的DNS服务器地址: " dns_server 776 | if [[ -f /etc/redhat-release ]]; then 777 | # CentOS 778 | echo "nameserver $dns_server" | sudo tee /etc/resolv.conf >/dev/null 779 | echo "DNS服务器已修改为 $dns_server" 780 | elif [[ -f /etc/lsb-release ]]; then 781 | # Ubuntu 782 | sudo sed -i "s/nameserver .*/nameserver $dns_server/" /etc/resolv.conf 783 | echo "DNS服务器已修改为 $dns_server" 784 | elif [[ -f /etc/debian_version ]]; then 785 | # Debian 786 | sudo sed -i "s/nameserver .*/nameserver $dns_server/" /etc/resolv.conf 787 | echo "DNS服务器已修改为 $dns_server" 788 | else 789 | echo "不支持的操作系统" 790 | fi 791 | } 792 | 793 | 794 | 795 | 796 | # 一键更新 CentOS 最新版系统 797 | update_centos() { 798 | read -p "确认要更新 CentOS 最新版系统吗?(y/n): " confirm 799 | if [[ $confirm == [yY] ]]; then 800 | echo "正在更新 CentOS 最新版系统..." 801 | # 在这里添加更新 CentOS 的命令 802 | sudo yum update 803 | echo "CentOS 最新版系统更新完成" 804 | reboot 805 | else 806 | echo "取消更新 CentOS 最新版系统" 807 | fi 808 | } 809 | 810 | # 一键更新 Ubuntu 最新版系统 811 | update_ubuntu() { 812 | read -p "确认要更新 Ubuntu 最新版系统吗?(y/n): " confirm 813 | if [[ $confirm == [yY] ]]; then 814 | echo "正在更新 Ubuntu 最新版系统..." 815 | # 在这里添加更新 Ubuntu 的命令 816 | sudo apt update 817 | sudo apt upgrade -y 818 | echo "Ubuntu 最新版系统更新完成" 819 | reboot 820 | else 821 | echo "取消更新 Ubuntu 最新版系统" 822 | fi 823 | } 824 | 825 | 826 | 827 | # 函数:切换KSM状态 828 | toggle_ksm() { 829 | ksm_status=$(cat /sys/kernel/mm/ksm/run) 830 | if [ $ksm_status -eq 0 ]; then 831 | /bin/systemctl start ksm 832 | /bin/systemctl start ksmtuned 833 | cat /sys/kernel/mm/ksm/run 834 | echo "KSM内存回收已开启。" 835 | else 836 | /bin/systemctl stop ksmtuned 837 | /bin/systemctl stop ksm 838 | echo 0 > /sys/kernel/mm/ksm/run 839 | echo "KSM内存回收已关闭。" 840 | fi 841 | } 842 | 843 | # 一键更新 Debian 最新版系统 844 | update_debian() { 845 | read -p "确认要更新 Debian 最新版系统吗?(y/n): " confirm 846 | if [[ $confirm == [yY] ]]; then 847 | echo "正在更新 Debian 最新版系统..." 848 | # 在这里添加更新 Debian 的命令 849 | sudo apt update 850 | sudo apt upgrade -y 851 | echo "Debian 最新版系统更新完成" 852 | reboot 853 | else 854 | echo "取消更新 Debian 最新版系统" 855 | fi 856 | } 857 | 858 | 859 | 860 | # 更换CentOS 7源为阿里云源的函数 861 | change_centos_to_aliyun() { 862 | if [ -f /etc/yum.repos.d/CentOS-Base.repo ]; then 863 | echo "正在更换CentOS的源为阿里云源..." 864 | sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 865 | cat << 'EOF' | sudo tee /etc/yum.repos.d/CentOS-Base.repo 866 | [base] 867 | name=CentOS-$releasever - Base - 阿里云镜像 868 | baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ 869 | gpgcheck=1 870 | gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 871 | 872 | # 可选的,添加阿里云的额外源 873 | [extras] 874 | name=CentOS-$releasever - Extras - 阿里云镜像 875 | baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/ 876 | gpgcheck=1 877 | gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 878 | 879 | # 可选的,添加阿里云的更新源 880 | [updates] 881 | name=CentOS-$releasever - Updates - 阿里云镜像 882 | baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ 883 | gpgcheck=1 884 | gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 885 | EOF 886 | sudo yum clean all 887 | sudo yum makecache 888 | echo "CentOS源更换完成。" 889 | else 890 | echo "CentOS源配置文件不存在。" 891 | fi 892 | } 893 | 894 | # 更换Ubuntu 20.04源为阿里云源的函数 895 | change_ubuntu_to_aliyun() { 896 | if [ -f /etc/apt/sources.list ]; then 897 | echo "正在更换Ubuntu的源为阿里云源..." 898 | sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 899 | sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list 900 | sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list 901 | echo "Ubuntu源更换完成。" 902 | else 903 | echo "Ubuntu源配置文件不存在。" 904 | fi 905 | } 906 | 907 | 908 | 909 | # 更换Debian源为阿里云源的函数 910 | change_debian_to_aliyun() { 911 | if [ -f /etc/apt/sources.list ]; then 912 | echo "正在更换Debian的源为阿里云源..." 913 | sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 914 | sudo sed -i 's|http://[^ ]*|http://mirrors.aliyun.com|' /etc/apt/sources.list 915 | echo "Debian源更换完成。" 916 | else 917 | echo "Debian源配置文件不存在。" 918 | fi 919 | } 920 | 921 | # 检查并安装ntpdate 922 | install_ntpdate() { 923 | if ! command -v ntpdate &> /dev/null; then 924 | echo "正在安装ntpdate..." 925 | if [ -f /etc/redhat-release ]; then 926 | sudo yum install -y ntpdate 927 | elif [ -f /etc/debian_version ]; then 928 | sudo apt-get install -y ntpdate 929 | else 930 | echo "不支持的操作系统类型。" 931 | exit 1 932 | fi 933 | echo "ntpdate安装完成。" 934 | fi 935 | } 936 | 937 | 938 | 939 | # 函数:显示服务器配置信息 940 | show_server_config() { 941 | echo "=== 服务器配置信息 ===" 942 | echo "CPU核心数:" 943 | lscpu | grep -w "CPU(s):" | grep -v "\-" 944 | lscpu | grep -w "Model name:" 945 | echo "CPU频率:" 946 | lscpu | grep -w "CPU MHz" 947 | echo "虚拟化类型:" 948 | lscpu | grep -w "Hypervisor vendor:" 949 | echo "系统版本:" 950 | if [ -f /etc/lsb-release ]; then 951 | . /etc/lsb-release 952 | echo "Ubuntu $DISTRIB_RELEASE" 953 | elif [ -f /etc/debian_version ]; then 954 | DEBIAN_VERSION=$(cat /etc/debian_version) 955 | echo "Debian $DEBIAN_VERSION" 956 | elif [ -f /etc/centos-release ]; then 957 | CENTOS_VERSION=$(cat /etc/centos-release) 958 | echo "CentOS $CENTOS_VERSION" 959 | else 960 | echo "无法识别的系统类型" 961 | fi 962 | echo "内存信息:" 963 | free -h 964 | echo "硬盘信息:" 965 | df -h 966 | } 967 | 968 | 969 | 970 | # 一键重启网卡 971 | function restart_network_card() { 972 | if [ -f /etc/os-release ]; then 973 | . /etc/os-release 974 | os=$ID 975 | elif [ -f /etc/centos-release ]; then 976 | os="centos" 977 | else 978 | echo "Unsupported operating system." 979 | return 980 | fi 981 | 982 | if [ "$os" == "debian" ]; then 983 | sudo systemctl restart networking 984 | elif [ "$os" == "ubuntu" ]; then 985 | sudo systemctl restart networkd-dispatcher 986 | elif [ "$os" == "centos" ]; then 987 | sudo service network restart 988 | else 989 | echo "Unsupported operating system." 990 | return 991 | fi 992 | 993 | echo "网卡已重启" 994 | } 995 | 996 | # 上传文件到远程服务器 997 | upload_file() { 998 | # 输入远程服务器的 IP 地址或域名 999 | read -p "请输入远程服务器的 IP 地址或域名: " remote_server 1000 | 1001 | # 输入远程服务器的用户名 1002 | read -p "请输入远程服务器的用户名: " remote_user 1003 | 1004 | # 输入远程服务器的目标路径 1005 | read -p "请输入远程服务器的目标路径: " remote_path 1006 | 1007 | # 输入本地文件的路径 1008 | read -p "请输入要传输的本地文件的路径: " local_file 1009 | 1010 | # 使用 scp 命令传输文件 1011 | echo "正在传输文件到远程服务器..." 1012 | scp "$local_file" "$remote_user@$remote_server:$remote_path" 1013 | echo "文件传输完成" 1014 | } 1015 | 1016 | 1017 | 1018 | # 从远程服务器下载文件 1019 | download_file() { 1020 | # 输入远程服务器的 IP 地址或域名 1021 | read -p "请输入远程服务器的 IP 地址或域名: " remote_server 1022 | 1023 | # 输入远程服务器的用户名 1024 | read -p "请输入远程服务器的用户名: " remote_user 1025 | 1026 | # 输入远程服务器的文件路径 1027 | read -p "请输入远程服务器的文件路径: " remote_file 1028 | 1029 | # 输入本地保存文件的路径 1030 | read -p "请输入本地保存文件的路径: " local_path 1031 | 1032 | # 使用 scp 命令从远程服务器下载文件 1033 | echo "正在从远程服务器下载文件..." 1034 | scp "$remote_user@$remote_server:$remote_file" "$local_path" 1035 | echo "文件下载完成" 1036 | } 1037 | 1038 | 1039 | 1040 | # 函数:一键开启/关闭Ping 1041 | toggle_ping() { 1042 | if [ "$(sysctl -n net.ipv4.icmp_echo_ignore_all)" = "1" ]; then 1043 | echo "正在开启Ping..." 1044 | sudo sysctl -w net.ipv4.icmp_echo_ignore_all=0 1045 | echo "已开启Ping。" 1046 | else 1047 | echo "正在关闭Ping..." 1048 | sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1 1049 | echo "已关闭Ping。" 1050 | fi 1051 | } 1052 | 1053 | # 询问是否重启服务器 1054 | ask_reboot() { 1055 | read -p "更新完成,是否重启服务器?(y/n): " confirm 1056 | if [[ $confirm == [yY] ]]; then 1057 | restart_server 1058 | else 1059 | echo "更新完成,服务器未重启" 1060 | fi 1061 | } 1062 | 1063 | 1064 | 1065 | # 主循环 1066 | while true 1067 | do 1068 | show_menu 1069 | read -p "请输入选项: " choice 1070 | case $choice in 1071 | 1) 1072 | while true 1073 | do 1074 | system_menu 1075 | read -p "请输入选项: " system_choice 1076 | case $system_choice in 1077 | 1) 1078 | restart_server 1079 | ;; 1080 | 2) 1081 | change_password 1082 | ;; 1083 | 3) 1084 | sync_shanghai_time 1085 | ;; 1086 | 4) 1087 | change_ssh_port 1088 | ;; 1089 | 5) 1090 | set_dns 1091 | ;; 1092 | 6) 1093 | toggle_ssh 1094 | ;; 1095 | 7) 1096 | update_centos 1097 | ;; 1098 | 8) 1099 | update_ubuntu 1100 | ;; 1101 | 9) 1102 | update_debian 1103 | ;; 1104 | 10) change_centos_to_aliyun;; 1105 | 11) change_ubuntu_to_aliyun;; 1106 | 12) change_debian_to_aliyun;; 1107 | 13) 1108 | create_user 1109 | ;; 1110 | 14) 1111 | show_connected_ips_count 1112 | ;; 1113 | 15) 1114 | change_hostname 1115 | ;; 1116 | 16) update_repo;; 1117 | 1118 | 17) show_login_ips;; 1119 | q) 1120 | break 1121 | ;; 1122 | *) 1123 | echo "无效的选项,请重新输入" 1124 | ;; 1125 | esac 1126 | read -p "按回车键继续..." 1127 | done 1128 | ;; 1129 | 1130 | 2) 1131 | while true 1132 | do 1133 | network_menu 1134 | read -p "请输入选项: " network_choice 1135 | case $network_choice in 1136 | 1) 1137 | restart_network_card 1138 | ;; 1139 | 2) 1140 | toggle_ping 1141 | ;; 1142 | 3) 1143 | add_ip 1144 | ;; 1145 | 4) 1146 | show_server_location 1147 | ;; 1148 | 5) 1149 | show_server_location2 1150 | ;; 1151 | 6) 1152 | show_server_config 1153 | ;; 1154 | 1155 | 7) install_dig 1156 | check_dns_udp 1157 | ;; 1158 | 8) 1159 | check_ip_forwarding 1160 | setup_port_forwarding 1161 | ;; 1162 | 9) 1163 | close_port_forwarding 1164 | ;; 1165 | 10) 1166 | forwarding 1167 | ;; 1168 | 11) 1169 | disable_forwarding 1170 | ;; 1171 | 12) 1172 | netstat -tuln 1173 | ;; 1174 | 13) 1175 | check_and_install_iftop 1176 | start_iftop 1177 | ;; 1178 | 1179 | q) 1180 | break 1181 | ;; 1182 | *) 1183 | echo "无效的选项,请重新输入" 1184 | ;; 1185 | esac 1186 | read -p "按回车键继续..." 1187 | done 1188 | ;; 1189 | 1190 | 1191 | 3) 1192 | while true 1193 | do 1194 | file_transfer_menu 1195 | read -p "请输入选项: " file_transfer_choice 1196 | case $file_transfer_choice in 1197 | 1) 1198 | upload_file 1199 | ;; 1200 | 2) 1201 | download_file 1202 | ;; 1203 | 3) 1204 | fdisk -l 1205 | ;; 1206 | 4) 1207 | mount_data_disk 1208 | ;; 1209 | 5) 1210 | umount_data_disk 1211 | ;; 1212 | 6) 1213 | format_disk 1214 | ;; 1215 | 7) 1216 | repair_badblocks 1217 | ;; 1218 | 8) 1219 | custom_script 1220 | ;; 1221 | 9) review_files_custom;; 1222 | 10) view_history ;; 1223 | 11) clear_history ;; 1224 | q) 1225 | break 1226 | ;; 1227 | *) 1228 | echo "无效的选项,请重新输入" 1229 | ;; 1230 | esac 1231 | read -p "按回车键继续..." 1232 | done 1233 | ;; 1234 | 1235 | 4) 1236 | while true 1237 | do 1238 | clear 1239 | echo "=== 宝塔面板菜单 ===" 1240 | echo "1. 宝塔官方一键挂载硬盘脚本" 1241 | echo "2. 安装堡塔主机安全系统" 1242 | echo "3. 安装Centos/OpenCloud/Alibaba稳定版" 1243 | echo "4. 安装Ubuntu/Deepin宝塔稳定版" 1244 | echo "5. 安装Debian宝塔稳定版" 1245 | echo "6. 安装宝塔面板最新正式版" 1246 | echo "7. 一键安装宝塔WAF最新版" 1247 | echo "q. 返回上级菜单" 1248 | echo "====================" 1249 | read -p "请输入选项: " other_choice 1250 | case $other_choice in 1251 | 1252 | 1) 1253 | while true 1254 | do 1255 | clear 1256 | echo "请选择确认并选择您的操作系统" 1257 | echo "1. CentOS系统" 1258 | echo "2. Ubuntu系统" 1259 | echo "3. Debian系统" 1260 | echo "q. 返回上级菜单" 1261 | read -p "请输入选项: " other_choice 1262 | case $other_choice in 1263 | 1264 | 1) 1265 | yum install wget -y && wget -O auto_disk.sh http://download.bt.cn/tools/auto_disk.sh && bash auto_disk.sh;; 1266 | 2) 1267 | wget -O auto_disk.sh http://download.bt.cn/tools/auto_disk.sh && sudo bash auto_disk.sh;; 1268 | 3) 1269 | wget -O auto_disk.sh http://download.bt.cn/tools/auto_disk.sh && sudo bash auto_disk.sh;; 1270 | q) 1271 | break 1272 | ;; 1273 | esac 1274 | done 1275 | ;; 1276 | 1277 | 2) 1278 | URL=https://download.bt.cn/bthids/scripts/install_hids.sh && if [ -f /usr/bin/curl ];then curl -sSO "$URL" ;else wget -O install_hids.sh "$URL";fi;bash install_hids.sh;; 1279 | 3) 1280 | url=https://download.bt.cn/install/install_lts.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install_lts.sh $url;fi;bash install_lts.sh fe0808632;; 1281 | 4) 1282 | wget -O install.sh https://download.bt.cn/install/install_lts.sh && sudo bash install.sh fe0808632;; 1283 | 5) 1284 | wget -O install.sh https://download.bt.cn/install/install_lts.sh && bash install.sh fe0808632;; 1285 | 6) 1286 | if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh fe0808632;; 1287 | 7) 1288 | URL=https://download.bt.cn/cloudwaf/scripts/install_cloudwaf.sh && if [ -f /usr/bin/curl ];then curl -sSO "$URL" ;else wget -O install_cloudwaf.sh "$URL";fi;bash install_cloudwaf.sh;; 1289 | q) 1290 | break 1291 | ;; 1292 | esac 1293 | read -p "按回车键继续..." 1294 | done 1295 | ;; 1296 | 1297 | 5) 1298 | while true 1299 | do 1300 | clear 1301 | echo "=== 宿主机菜单 ===" 1302 | echo "1. 一键开启云服务器虚拟化" 1303 | echo "2. 一键自定义设置SWAP虚拟内存" 1304 | echo "3. 一键关闭SWAP虚拟内存" 1305 | echo "4. 一键开启/关闭KSM内存回收" 1306 | echo "5. 一键关闭SELinux" 1307 | echo "q. 返回上级菜单" 1308 | echo "====================" 1309 | read -p "请输入选项: " other_choice 1310 | case $other_choice in 1311 | 1312 | 1) 1313 | enable_nested_virtualization;; 1314 | 1315 | 2) 1316 | set_swap;; 1317 | 1318 | 3) 1319 | disable_swap;; 1320 | 1321 | 4) 1322 | toggle_ksm;; 1323 | 1324 | 5) 1325 | disable_selinux;; 1326 | 1327 | q) 1328 | break 1329 | ;; 1330 | *) 1331 | echo "无效的选项,请重新输入" 1332 | ;; 1333 | esac 1334 | read -p "按回车键继续..." 1335 | done 1336 | ;; 1337 | 1338 | 6) 1339 | bbryj 1340 | ;; 1341 | 7) 1342 | curl https://raw.githubusercontent.com/oneclickvirt/backtrace/main/backtrace_install.sh -sSf | bash && backtrace 1343 | ;; 1344 | 8) 1345 | bash <(curl -Ls IP.Check.Place) 1346 | ;; 1347 | 9) 1348 | lmtjc 1349 | ;; 1350 | 10) 1351 | curl -L https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh 1352 | ;; 1353 | 11) 1354 | bash <(curl -sSL https://linuxmirrors.cn/main.sh) 1355 | ;; 1356 | 12) 1357 | bash <(curl -sSL https://linuxmirrors.cn/docker.sh) 1358 | ;; 1359 | 13) 1360 | if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh fe0808632 1361 | ;; 1362 | 14) 1363 | while true 1364 | do 1365 | clear 1366 | echo "提醒:国内服务器请先换源!否则无法安装docker!" 1367 | echo "1. 国内服务器安装1panel" 1368 | echo "2. 海外服务器安装1panel" 1369 | echo "q. 返回上一页" 1370 | read -p "请输入选项: " other_choice 1371 | case $other_choice in 1372 | 1373 | 1) 1374 | bash <(curl -sSL https://linuxmirrors.cn/docker.sh) 1375 | curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh 1376 | ;; 1377 | 1378 | 2) 1379 | curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh 1380 | ;; 1381 | 1382 | q) 1383 | break 1384 | ;; 1385 | *) 1386 | echo "无效的选项,请重新输入" 1387 | ;; 1388 | esac 1389 | read -p "按回车键继续..." 1390 | done 1391 | ;; 1392 | 15) 1393 | # 备份配置文件 1394 | cp /etc/sysctl.conf /etc/sysctl.conf.bak 1395 | echo "已备份 /etc/sysctl.conf 为 /etc/sysctl.conf.bak" 1396 | 1397 | # 删除旧配置 1398 | echo "正在删除旧配置..." 1399 | sed -i '/net.ipv4.tcp_no_metrics_save/d' /etc/sysctl.conf 1400 | sed -i '/net.ipv4.tcp_ecn/d' /etc/sysctl.conf 1401 | sed -i '/net.ipv4.tcp_frto/d' /etc/sysctl.conf 1402 | sed -i '/net.ipv4.tcp_mtu_probing/d' /etc/sysctl.conf 1403 | sed -i '/net.ipv4.tcp_rfc1337/d' /etc/sysctl.conf 1404 | sed -i '/net.ipv4.tcp_sack/d' /etc/sysctl.conf 1405 | sed -i '/net.ipv4.tcp_fack/d' /etc/sysctl.conf 1406 | sed -i '/net.ipv4.tcp_window_scaling/d' /etc/sysctl.conf 1407 | sed -i '/net.ipv4.tcp_adv_win_scale/d' /etc/sysctl.conf 1408 | sed -i '/net.ipv4.tcp_moderate_rcvbuf/d' /etc/sysctl.conf 1409 | sed -i '/net.ipv4.tcp_rmem/d' /etc/sysctl.conf 1410 | sed -i '/net.ipv4.tcp_wmem/d' /etc/sysctl.conf 1411 | sed -i '/net.core.rmem_max/d' /etc/sysctl.conf 1412 | sed -i '/net.core.wmem_max/d' /etc/sysctl.conf 1413 | sed -i '/net.ipv4.udp_rmem_min/d' /etc/sysctl.conf 1414 | sed -i '/net.ipv4.udp_wmem_min/d' /etc/sysctl.conf 1415 | sed -i '/net.core.default_qdisc/d' /etc/sysctl.conf 1416 | sed -i '/net.ipv4.tcp_congestion_control/d' /etc/sysctl.conf 1417 | echo "旧配置已删除。" 1418 | 1419 | # 添加新配置 1420 | echo "正在添加新配置..." 1421 | cat >> /etc/sysctl.conf << EOF 1422 | net.ipv4.tcp_no_metrics_save=1 1423 | net.ipv4.tcp_ecn=0 1424 | net.ipv4.tcp_frto=0 1425 | net.ipv4.tcp_mtu_probing=0 1426 | net.ipv4.tcp_rfc1337=0 1427 | net.ipv4.tcp_sack=1 1428 | net.ipv4.tcp_fack=1 1429 | net.ipv4.tcp_window_scaling=1 1430 | net.ipv4.tcp_adv_win_scale=1 1431 | net.ipv4.tcp_moderate_rcvbuf=1 1432 | net.core.rmem_max=33554432 1433 | net.core.wmem_max=33554432 1434 | net.ipv4.tcp_rmem=4096 87380 33554432 1435 | net.ipv4.tcp_wmem=4096 16384 33554432 1436 | net.ipv4.udp_rmem_min=8192 1437 | net.ipv4.udp_wmem_min=8192 1438 | net.core.default_qdisc=fq 1439 | net.ipv4.tcp_congestion_control=bbr 1440 | EOF 1441 | echo "新配置已添加。" 1442 | 1443 | # 检查并安装 sysctl 1444 | if ! command -v sysctl &> /dev/null; then 1445 | echo "sysctl 命令未安装,正在自动安装..." 1446 | if command -v apt &> /dev/null; then 1447 | apt update && apt install -y procps 1448 | elif command -v yum &> /dev/null; then 1449 | yum install -y procps-ng 1450 | elif command -v dnf &> /dev/null; then 1451 | dnf install -y procps-ng 1452 | else 1453 | echo "无法自动安装 sysctl,请手动安装 procps 或 procps-ng 包。" 1454 | exit 1 1455 | fi 1456 | echo "sysctl 已安装。" 1457 | fi 1458 | 1459 | # 确保 sysctl 在 PATH 中 1460 | export PATH=$PATH:/sbin:/usr/sbin 1461 | 1462 | # 再次检查 sysctl 是否存在 1463 | if ! command -v sysctl &> /dev/null; then 1464 | echo "错误:sysctl 命令仍未找到,请手动检查系统。" 1465 | exit 1 1466 | fi 1467 | 1468 | # 应用配置 1469 | echo "正在应用配置..." 1470 | if sysctl -p && sysctl --system; then 1471 | echo "配置已成功应用。" 1472 | else 1473 | echo "应用配置失败,请检查 /etc/sysctl.conf 文件。" 1474 | exit 1 1475 | fi 1476 | 1477 | echo "TCP 优化完成!" 1478 | ;; 1479 | q) 1480 | echo "再见!服务器推荐:www.asiayun.com" 1481 | break 1482 | ;; 1483 | *) 1484 | echo "无效的选项,请重新输入" 1485 | ;; 1486 | esac 1487 | read -p "按回车键继续..." 1488 | done 1489 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 亚洲云Linux Tools脚本仓库 2 | 3 | ### 介绍 4 | 5 | 亚洲云(Asiayun)成立于2018年,资质齐全老商家,全球20+机房高防大带宽服务器。 6 | 拥有IDC/ISP/ICP等资质,目前云产品覆盖以下地区: 7 | 大陆地区:北京、上海、广州、深圳、成都、十堰、宁波 8 | 境外地区:香港、美国、台北、东京、首尔、新加坡、雅加达、孟买、马尼拉、胡志明市、曼谷、伦敦、圣保罗、迪拜、马来西亚、德国、荷兰 9 | 10 | [![https://www.asiayun.com](https://raw.githubusercontent.com/vpsad/linuxtools/main/sd3ROMZU.webp)](https://www.asiayun.com/) 11 | 12 | ### 官网地址 13 | 14 | [https://www.asiayun.com](https://www.asiayun.com/) 15 | 16 | ### 脚本介绍 17 | ![https://www.asiayun.com](https://raw.githubusercontent.com/vpsad/linuxtools/main/linuxtool.png) 18 | 19 | 该脚本工具的功能是快速换源,一键安装BBR、宝塔面板等,测试服务器回程线路、IP质量、流媒体解锁以及服务器性能情况、提供多种操作菜单以实现系统、网络、文件传输等功能。以下是具体功能总结: 20 | (AI生成的总结,如有错误或遗漏请反馈) 21 | 22 | 23 | #### **1. 系统菜单** 24 | + **重启服务器**:用户可以通过该功能重启服务器,确保系统的正常运行。 25 | + **修改密码**:提供了一键修改服务器登录密码的功能,提高安全性。 26 | + **同步上海时间**:通过安装ntpdate同步服务器时间,确保时间的准确性。 27 | + **修改SSH端口**:用户可以方便地更改SSH端口,增强安全性。 28 | + **修改DNS**:支持一键修改DNS设置,提高域名解析速度。 29 | + **开启/关闭SSH登录**:可以禁用或启用SSH登录功能,提升系统安全。 30 | + **更新系统版本**:支持一键更新CentOS、Ubuntu和Debian等系统的最新版本,确保系统的稳定性和安全性。 31 | + **更换源**:提供更换不同操作系统源为阿里云镜像的功能,确保软件包的更新和稳定性。 32 | + **创建用户和管理员**:允许用户创建新用户并设置权限,满足多用户环境的管理需求。 33 | + **查看当前连接IP**:显示当前与服务器连接的IP地址,有助于网络安全管理。 34 | + **修改主机名**:允许用户修改服务器的主机名,便于管理和识别。 35 | 36 | #### **2. 网络菜单** 37 | + **重启网卡**:重启网络接口卡,解决网络连接问题。 38 | + **Ping测试**:一键开启或关闭对指定IP的Ping测试,用于检测网络连通性。 39 | + **附加IP绑定**:添加或删除服务器的附加IP地址,增强网络灵活性。 40 | + **查看地理位置**:显示服务器的地理位置信息,帮助用户了解服务器的物理位置。 41 | + **查看原生IP**:显示服务器的原始IP地址,用于网络配置和管理。 42 | + **检查UDP屏蔽**:检测并显示是否屏蔽了UDP协议,保证数据传输的完整性。 43 | + **VPS IP映射**:将VPS的IP地址映射到独立服务器上,实现负载均衡和高可用性。 44 | + **四层端口转发**:支持四层端口转发功能,提高内网访问外网的效率。 45 | + **关闭四层端口转发**:一键关闭已设置的四层端口转发规则,保障网络安全。 46 | + **查看使用端口**:列出服务器当前正在使用的端口信息,便于网络监控和管理。 47 | + **带宽使用情况**:查看哪个IP在占用带宽,帮助优化网络资源分配。 48 | 49 | #### **3. 文件菜单** 50 | + **上传文件到远程服务器**:支持一键上传本地文件到远程服务器,方便数据备份和共享。 51 | + **下载文件到本地**:从远程服务器下载文件到本地计算机,便于数据获取和管理。 52 | + **硬盘分区信息查看**:显示所有硬盘分区的信息,帮助用户了解存储状况。 53 | + **自定义挂载数据盘**:允许用户自定义挂载数据盘路径,灵活管理存储空间。 54 | + **卸载数据盘**:一键卸载已挂载的数据盘,释放存储资源。 55 | + **格式化数据盘**:格式化选定的数据盘,准备新的数据存储环境。 56 | + **修复坏块**:检测并修复硬盘超级坏块,延长硬盘使用寿命 57 | + **设置开机启动脚本**:用户可以设置开机自动执行的脚本程序,提高系统自动化管理水平 58 | + **关键词内容审查**:查询特定关键词的文件内容,用于内容审查和管理 59 | + **清空SSH历史命令**:清除SSH会话的历史记录,保护用户隐私。 60 | 61 | #### **4. 宝塔菜单** 62 | + **宝塔官方一键挂载硬盘脚本**:提供官方支持的硬盘挂载脚本,简化硬盘管理过程。 63 | + **安装堡塔主机安全系统**:一键安装堡塔主机安全系统,增强服务器安全性。 64 | + **安装Centos/OpenCloud/Alibaba稳定版**:支持一键安装centos稳定版的宝塔产品,提升系统稳定性。 65 | + **安装Ubuntu/Deepin宝塔稳定版**:为Ubuntu和Deepin操作系统提供宝塔产品的稳定版安装选项。 66 | + **安装Debian宝塔稳定版**:提供Debian操作系统下的宝塔产品稳定版安装选项。 67 | + **安装宝塔面板最新正式版**:一键安装最新的宝塔面板正式版,确保系统的现代化管理需求。 68 | + **一键安装宝塔WAF最新版**:一键安装最新版本的宝塔Web应用防火墙(WAF),增强网站安全防护。 69 | 70 | #### **5. 宿主机菜单** 71 | + **一键开启云服务器虚拟化**:该功能允许用户一键开启物理服务器的虚拟化环境,提升服务器资源的利用率和灵活性。 72 | + **一键自定义设置SWAP虚拟内存**:用户可以自定义设置SWAP虚拟内存的大小,优化服务器的内存管理。 73 | + **一键关闭SWAP虚拟内存**:一键禁用SWAP虚拟内存,释放物理内存资源。 74 | + **一键开启/关闭KSM内存回收**:提供开启或关闭KSM(内核空间管理器)的功能,提高系统内存使用效率。 75 | + **一键关闭SELinux**:一键禁用SELinux安全模块,提高系统的运行速度和灵活性。 76 | 77 | #### **6. 快捷功能** 78 | + **BBR一键脚本**:提供BBR优化脚本,通过调整TCP参数提升网络速度。 79 | + **回程路由可视化脚本**:使用可视化脚本展示服务器的回程路由信息,帮助用户了解网络路径。 80 | + **IP质量检测脚本**:检测并显示服务器的IP地址质量情况,确保网络连接的稳定性。 81 | + **流媒体解锁检测脚本**:检测并显示流媒体解锁状态,帮助用户管理流媒体服务。 82 | + **融合怪VPS测试一键脚本**:提供一键测试VPS性能和稳定性的功能,确保VPS服务的可靠性。 83 | + **Linux系统一键换源(默认版)**:一键更换Linux系统的默认软件源,提高系统更新速度和稳定性。 84 | + **大陆服务器一键安装docker**:大陆服务器一键安装docker 85 | + **通用一键安装宝塔最新正式版**:一键安装最新版本的宝塔面板,简化宝塔产品的安装过程。 86 | 87 | ### 更新日志 88 | v1.0.4.2 2025年2月19日更新,EDU换源脚本替换为大陆版docker安装脚本 89 | v1.0.4.1 2025年1月17日更新,优化TCP网络优化脚本 90 | v1.0.4 2024年12月7日更新,新增TCP网络优化脚本 91 | v1.0.3 2024年9月4日更新,新增1panel安装功能 92 | v1.0.2 2024年9月3日更新,融合007开源工具箱,并优化新增多个一键脚本 93 | v1.0.1 2021年优化版本,主要优化界面,并更新去除失效脚本 94 | v1.0.0 2020年首创版本,功能有:挂载硬盘、安装宝塔面板、离线宝塔面板、BBR一键安装、奈非检测等 95 | 96 | ### 使用方法 97 | 大陆服务器 98 | ```bash 99 | curl -L https://gitee.com/krhzj/LinuxTool/raw/main/Linux.sh -o Linux.sh && chmod +x Linux.sh && bash Linux.sh 100 | ``` 101 | 境外服务器 102 | ```bash 103 | curl -L https://raw.githubusercontent.com/vpsad/LinuxTool/main/Linux.sh -o Linux.sh && chmod +x Linux.sh && bash Linux.sh 104 | ``` 105 | -------------------------------------------------------------------------------- /linuxtool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vpsad/LinuxTool/1a951c98a9bb11644468cf9b233115c92204c257/linuxtool.png -------------------------------------------------------------------------------- /sd3ROMZU.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vpsad/LinuxTool/1a951c98a9bb11644468cf9b233115c92204c257/sd3ROMZU.webp --------------------------------------------------------------------------------