autocheck.sh
· 1020 B · Bash
Raw
#!/bin/bash
# Find all .iso files and their corresponding .sha256 files, including subdirectories
find . -type f -name "*.iso" | while read -r iso_file; do
# Get the corresponding .sha256 file in the same directory
sha256_file="${iso_file%.iso}.sha256"
# Check if the .sha256 file exists
if [[ -f "$sha256_file" ]]; then
# Read the expected checksum from the .sha256 file and strip the 'SHA256: ' prefix
expected_checksum=$(cat "$sha256_file" | sed 's/^SHA256: //')
# Calculate the checksum of the .iso file
actual_checksum=$(sha256sum "$iso_file" | awk '{ print $1 }')
# Compare the checksums
if [[ "$expected_checksum" == "$actual_checksum" ]]; then
echo "Checksum for $iso_file matches."
else
echo "Checksum for $iso_file does not match!"
echo "Expected: $expected_checksum"
echo "Actual: $actual_checksum"
fi
else
echo "SHA256 file for $iso_file not found!"
fi
done
1 | |
2 | #!/bin/bash |
3 | |
4 | # Find all .iso files and their corresponding .sha256 files, including subdirectories |
5 | find . -type f -name "*.iso" | while read -r iso_file; do |
6 | # Get the corresponding .sha256 file in the same directory |
7 | sha256_file="${iso_file%.iso}.sha256" |
8 | |
9 | # Check if the .sha256 file exists |
10 | if [[ -f "$sha256_file" ]]; then |
11 | # Read the expected checksum from the .sha256 file and strip the 'SHA256: ' prefix |
12 | expected_checksum=$(cat "$sha256_file" | sed 's/^SHA256: //') |
13 | |
14 | # Calculate the checksum of the .iso file |
15 | actual_checksum=$(sha256sum "$iso_file" | awk '{ print $1 }') |
16 | |
17 | # Compare the checksums |
18 | if [[ "$expected_checksum" == "$actual_checksum" ]]; then |
19 | echo "Checksum for $iso_file matches." |
20 | else |
21 | echo "Checksum for $iso_file does not match!" |
22 | echo "Expected: $expected_checksum" |
23 | echo "Actual: $actual_checksum" |
24 | fi |
25 | else |
26 | echo "SHA256 file for $iso_file not found!" |
27 | fi |
28 | done |
autodown.sh
· 571 B · Bash
Raw
#!/usr/bin/env bash
set -euo pipefail
BASE_URL="https://anduinos-nightly-builds.aiursoft.cn/1.3"
# 定义所有语言的后缀
langs=(
ar_SA de_DE en_US en_GB es_ES fr_FR it_IT ja_JP ko_KR nl_NL pl_PL
pt_BR pt_PT ru_RU sv_SE th_TH tr_TR vi_VN zh_CN zh_HK zh_TW
)
# 遍历每种语言构造 .torrent 文件名并下载
for lang in "${langs[@]}"; do
file="AnduinOS-1.3.1-${lang}.torrent"
echo "Downloading $file ..."
wget -c "${BASE_URL}/${file}"
sha256="AnduinOS-1.3.1-${lang}.sha256"
echo "Downloading $sha256 ..."
wget -c "${BASE_URL}/${sha256}"
done
1 | #!/usr/bin/env bash |
2 | set -euo pipefail |
3 | |
4 | BASE_URL="https://anduinos-nightly-builds.aiursoft.cn/1.3" |
5 | |
6 | # 定义所有语言的后缀 |
7 | langs=( |
8 | ar_SA de_DE en_US en_GB es_ES fr_FR it_IT ja_JP ko_KR nl_NL pl_PL |
9 | pt_BR pt_PT ru_RU sv_SE th_TH tr_TR vi_VN zh_CN zh_HK zh_TW |
10 | ) |
11 | |
12 | # 遍历每种语言构造 .torrent 文件名并下载 |
13 | for lang in "${langs[@]}"; do |
14 | file="AnduinOS-1.3.1-${lang}.torrent" |
15 | echo "Downloading $file ..." |
16 | wget -c "${BASE_URL}/${file}" |
17 | |
18 | sha256="AnduinOS-1.3.1-${lang}.sha256" |
19 | echo "Downloading $sha256 ..." |
20 | wget -c "${BASE_URL}/${sha256}" |
21 | done |
autoseed.sh
· 2.6 KiB · Bash
Raw
#!/usr/bin/env bash
set -euo pipefail
# -----------------------------------------------------------------------------
# 依赖检查:aria2c、tmux 和 ufw(如果存在)
# -----------------------------------------------------------------------------
if ! command -v aria2c &> /dev/null; then
echo "[INFO] Installing aria2..."
sudo apt-get update && sudo apt-get install -y aria2
fi
if ! command -v tmux &> /dev/null; then
echo "[INFO] Installing tmux..."
sudo apt-get update && sudo apt-get install -y tmux
fi
# (可选)如果你没有 ufw,也可以忽略此依赖检查
if command -v ufw &> /dev/null; then
echo "[INFO] ufw detected."
else
echo "[INFO] ufw not installed or not in PATH; skipping firewall rules."
fi
# -----------------------------------------------------------------------------
# 查找 .torrent 文件
# -----------------------------------------------------------------------------
shopt -s nullglob
torrent_files=( *.torrent )
if [[ ${#torrent_files[@]} -eq 0 ]]; then
echo "[INFO] 当前目录下没有找到 .torrent 文件,退出。"
exit 0
fi
# -----------------------------------------------------------------------------
# 针对每个 .torrent,创建 tmux 会话并启动做种(随机高端口 + ufw 放行)
# -----------------------------------------------------------------------------
for torrent in "${torrent_files[@]}"; do
# 会话名:seed-<basename>
base="$(basename "$torrent" .torrent)"
session_name="seed-$base"
# 如果会话已存在则跳过
if tmux has-session -t "$session_name" 2> /dev/null; then
echo "[INFO] 会话 $session_name 已存在,跳过。"
continue
fi
# 随机选一个高端口(49152–65535)
if command -v shuf &> /dev/null; then
port=$(shuf -i 49152-65535 -n 1)
else
port=$(( RANDOM % 16384 + 49152 ))
fi
# 如果 ufw 已启用,则添加放行规则;若已放行则输出提示
if command -v ufw &> /dev/null && sudo ufw status | grep -q "Status: active"; then
echo "[INFO] 放行端口 $port/tcp 到 ufw..."
sudo ufw allow "${port}/tcp" || echo "[INFO] 端口 $port 已经放行"
fi
echo "[INFO] 启动会话 $session_name,做种文件:$torrent (端口:$port)"
tmux new-session -d -s "$session_name" -- \
aria2c \
--enable-dht=true \
--enable-dht6=true \
--enable-peer-exchange=true \
--bt-seed-unverified=true \
--bt-save-metadata=true \
--dir="$(pwd)" \
--seed-ratio=0.0 \
--listen-port="$port" \
"$torrent" || echo "$session_name 启动失败。"
done
echo "[INFO] 所有做种会话已启动。"
1 | #!/usr/bin/env bash |
2 | set -euo pipefail |
3 | |
4 | # ----------------------------------------------------------------------------- |
5 | # 依赖检查:aria2c、tmux 和 ufw(如果存在) |
6 | # ----------------------------------------------------------------------------- |
7 | if ! command -v aria2c &> /dev/null; then |
8 | echo "[INFO] Installing aria2..." |
9 | sudo apt-get update && sudo apt-get install -y aria2 |
10 | fi |
11 | |
12 | if ! command -v tmux &> /dev/null; then |
13 | echo "[INFO] Installing tmux..." |
14 | sudo apt-get update && sudo apt-get install -y tmux |
15 | fi |
16 | |
17 | # (可选)如果你没有 ufw,也可以忽略此依赖检查 |
18 | if command -v ufw &> /dev/null; then |
19 | echo "[INFO] ufw detected." |
20 | else |
21 | echo "[INFO] ufw not installed or not in PATH; skipping firewall rules." |
22 | fi |
23 | |
24 | # ----------------------------------------------------------------------------- |
25 | # 查找 .torrent 文件 |
26 | # ----------------------------------------------------------------------------- |
27 | shopt -s nullglob |
28 | torrent_files=( *.torrent ) |
29 | |
30 | if [[ ${#torrent_files[@]} -eq 0 ]]; then |
31 | echo "[INFO] 当前目录下没有找到 .torrent 文件,退出。" |
32 | exit 0 |
33 | fi |
34 | |
35 | # ----------------------------------------------------------------------------- |
36 | # 针对每个 .torrent,创建 tmux 会话并启动做种(随机高端口 + ufw 放行) |
37 | # ----------------------------------------------------------------------------- |
38 | for torrent in "${torrent_files[@]}"; do |
39 | # 会话名:seed-<basename> |
40 | base="$(basename "$torrent" .torrent)" |
41 | session_name="seed-$base" |
42 | |
43 | # 如果会话已存在则跳过 |
44 | if tmux has-session -t "$session_name" 2> /dev/null; then |
45 | echo "[INFO] 会话 $session_name 已存在,跳过。" |
46 | continue |
47 | fi |
48 | |
49 | # 随机选一个高端口(49152–65535) |
50 | if command -v shuf &> /dev/null; then |
51 | port=$(shuf -i 49152-65535 -n 1) |
52 | else |
53 | port=$(( RANDOM % 16384 + 49152 )) |
54 | fi |
55 | |
56 | # 如果 ufw 已启用,则添加放行规则;若已放行则输出提示 |
57 | if command -v ufw &> /dev/null && sudo ufw status | grep -q "Status: active"; then |
58 | echo "[INFO] 放行端口 $port/tcp 到 ufw..." |
59 | sudo ufw allow "${port}/tcp" || echo "[INFO] 端口 $port 已经放行" |
60 | fi |
61 | |
62 | echo "[INFO] 启动会话 $session_name,做种文件:$torrent (端口:$port)" |
63 | tmux new-session -d -s "$session_name" -- \ |
64 | aria2c \ |
65 | --enable-dht=true \ |
66 | --enable-dht6=true \ |
67 | --enable-peer-exchange=true \ |
68 | --bt-seed-unverified=true \ |
69 | --bt-save-metadata=true \ |
70 | --dir="$(pwd)" \ |
71 | --seed-ratio=0.0 \ |
72 | --listen-port="$port" \ |
73 | "$torrent" || echo "$session_name 启动失败。" |
74 | done |
75 | |
76 | echo "[INFO] 所有做种会话已启动。" |
77 |