添加 choose.sh
This commit is contained in:
		
							parent
							
								
									60335822f9
								
							
						
					
					
						commit
						5868e22589
					
				
							
								
								
									
										76
									
								
								choose.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								choose.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,76 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 以下变量需要填写
 | 
				
			||||||
 | 
					API_KEY="your_cloudflare_api_key"
 | 
				
			||||||
 | 
					EMAIL="your_email@example.com"
 | 
				
			||||||
 | 
					RECORD_ID="your_dns_record_id"
 | 
				
			||||||
 | 
					ZONE_ID="your_zone_id"
 | 
				
			||||||
 | 
					DOMAIN="your_domain.com"
 | 
				
			||||||
 | 
					SUBDOMAIN="sub.your_domain.com"
 | 
				
			||||||
 | 
					SCAN_PROGRAM_PATH="your_scan_program_path"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 克隆git仓库
 | 
				
			||||||
 | 
					git clone https://git.18g.me/feiwujia/iplist || { echo "Git clone failed"; exit 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 进入iplist目录
 | 
				
			||||||
 | 
					cd iplist || { echo "Change directory failed"; exit 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 创建result文件夹
 | 
				
			||||||
 | 
					mkdir -p result || { echo "Create result folder failed"; exit 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 创建use文件夹
 | 
				
			||||||
 | 
					mkdir -p use || { echo "Create use folder failed"; exit 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 计算文件的行数
 | 
				
			||||||
 | 
					total_lines=$(cat result/*.csv | wc -l)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 遍历iplist目录中的所有txt文件
 | 
				
			||||||
 | 
					for file in *.txt
 | 
				
			||||||
 | 
					do
 | 
				
			||||||
 | 
					    # 对每个txt文件执行scan_linux_amd64命令,输出结果到result文件夹中的csv文件
 | 
				
			||||||
 | 
					    $SCAN_PROGRAM_PATH -c 2000 -t 5 -o result/result_${file%.txt}.csv $file || { echo "scan program failed"; exit 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # 从csv文件中读取每一行,并显示进度
 | 
				
			||||||
 | 
					    cat "result/result_${file%.txt}.csv" | pv -l -s $total_lines | while IFS= read -r line
 | 
				
			||||||
 | 
					    do
 | 
				
			||||||
 | 
					        # 将每一行分割成多个字段
 | 
				
			||||||
 | 
					        IFS=',' read -ra fields <<< "$line"
 | 
				
			||||||
 | 
					        # 遍历每个字段
 | 
				
			||||||
 | 
					        for field in "${fields[@]}"
 | 
				
			||||||
 | 
					        do
 | 
				
			||||||
 | 
					            # 去除字段两边的空格
 | 
				
			||||||
 | 
					            field=$(echo $field | xargs)
 | 
				
			||||||
 | 
					            # 检查字段是否为有效的IPv4地址
 | 
				
			||||||
 | 
					            if [[ $field =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
 | 
				
			||||||
 | 
					                # 使用curl命令测试ip地址
 | 
				
			||||||
 | 
					                status_code=$(curl --resolve cloudflare.com:443:$field --insecure https://cloudflare.com/cdn-cgi/trace -o /dev/null -w '%{http_code}' -s)
 | 
				
			||||||
 | 
					                # 如果状态码为200,将ip地址保存到use.txt文件中
 | 
				
			||||||
 | 
					                if [ "$status_code" -eq 200 ]
 | 
				
			||||||
 | 
					                then
 | 
				
			||||||
 | 
					                    echo "IP $field is available"
 | 
				
			||||||
 | 
					                    echo $field >> use/use.txt
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                    echo "IP $field is not available"
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                # 如果字段不是有效的IPv4地址,跳出循环
 | 
				
			||||||
 | 
					                break
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 从use/use.txt文件中读取IP地址,并使用Cloudflare API更新DNS记录
 | 
				
			||||||
 | 
					while IFS= read -r ip
 | 
				
			||||||
 | 
					do
 | 
				
			||||||
 | 
					    # 使用Cloudflare API更新DNS记录
 | 
				
			||||||
 | 
					    curl -X PUT "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${RECORD_ID}" \
 | 
				
			||||||
 | 
					    -H "X-Auth-Email: ${EMAIL}" \
 | 
				
			||||||
 | 
					    -H "X-Auth-Key: ${API_KEY}" \
 | 
				
			||||||
 | 
					    -H "Content-Type: application/json" \
 | 
				
			||||||
 | 
					    --data '{"type":"A","name":"'${SUBDOMAIN}'","content":"'${ip}'","ttl":1,"proxied":false}' || { echo "curl failed"; exit 1; }
 | 
				
			||||||
 | 
					done < use/use.txt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 删除iplist文件夹
 | 
				
			||||||
 | 
					cd .. && rm -rf iplist || { echo "Remove iplist folder failed"; exit 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user