├── 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/)
11 |
12 | ### 官网地址
13 |
14 | [https://www.asiayun.com](https://www.asiayun.com/)
15 |
16 | ### 脚本介绍
17 | 
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
--------------------------------------------------------------------------------