Created
July 18, 2025 01:38
-
-
Save freelze/b1c0de9cb060566726148c4a5aae725e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# --- 設定區 --- | |
# 要讀取的檔案名稱 | |
INPUT_FILE="IP_table.txt" | |
# 要使用的 IP 位在第幾個欄位 (column) | |
IP_COLUMN=2 | |
# 要傳送的本地檔案名稱 | |
SOURCE_FILE="stress_cpu.sh" | |
# 檔案要傳送到遠端主機的哪個目錄下 (請確保目錄存在) | |
# /root/ 是 root 使用者的家目錄 | |
DESTINATION_PATH="/root/" | |
# 遠端主機的登入密碼 | |
PASSWORD='YOUR_PASSWORD!!!!!!!!!' | |
# 遠端主機的登入使用者 | |
REMOTE_USER="root" | |
# --- 主程式 --- | |
# 檢查 IP_table.txt 是否存在 | |
if [ ! -f "$INPUT_FILE" ]; then | |
echo "錯誤: 找不到 IP 表格檔案 '$INPUT_FILE'" | |
exit 1 | |
fi | |
# 檢查要傳送的本地檔案是否存在 | |
if [ ! -f "$SOURCE_FILE" ]; then | |
echo "錯誤: 找不到要傳送的來源檔案 '$SOURCE_FILE'" | |
exit 1 | |
fi | |
# 檢查 sshpass 是否已安裝 | |
if ! command -v sshpass &> /dev/null; then | |
echo "錯誤: sshpass 指令未找到。" | |
echo "請先安裝 sshpass (例如: sudo apt-get install sshpass 或 sudo yum install sshpass)" | |
exit 1 | |
fi | |
echo "開始批次傳送檔案 '$SOURCE_FILE'..." | |
echo "==========================================" | |
# 逐行讀取 IP_table.txt | |
while IFS= read -r line | |
do | |
# 跳過空白行或以'#'開頭的註解行 | |
if [[ -z "$line" || "$line" =~ ^# ]]; then | |
continue | |
fi | |
# 使用 cut 指令以','為分隔符,取出指定欄位的 IP | |
ip=$(echo "$line" | cut -d',' -f$IP_COLUMN) | |
# 檢查是否成功取到 IP | |
if [ -z "$ip" ]; then | |
echo "警告: 在行 '$line' 中無法取得第 $IP_COLUMN 欄位的 IP,跳過此行。" | |
continue | |
fi | |
echo "--- 正在傳送檔案到主機: $ip ---" | |
# 使用 sshpass 和 scp 傳送檔案 | |
# scp 也會使用 ssh 連線,所以同樣可以使用 -o 選項 | |
sshpass -p "$PASSWORD" scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null "$SOURCE_FILE" ${REMOTE_USER}@${ip}:${DESTINATION_PATH} | |
# 檢查上一個指令的返回碼,判斷是否成功 | |
if [ $? -eq 0 ]; then | |
echo "--- 檔案已成功傳送到 $ip:${DESTINATION_PATH} ---" | |
else | |
echo "--- 錯誤: 傳送檔案到 $ip 時發生問題 ---" | |
fi | |
echo "" # 輸出一個空行,方便閱讀 | |
done < "$INPUT_FILE" | |
echo "==========================================" | |
echo "所有檔案傳送操作已處理完畢。" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment