Bash
在bash中的值之後生成隨機數
我希望我的機器自動下載一些文件。這不一定非常有效。所以我決定用 bash 腳本來做這件事。
到目前為止,當我幾乎不編碼 URL 時,它仍然有效。但我想以不規則的順序檢索文件,我想我會使用簡單的變數。如何將隨機數放入我的變數中?
我的方法
data_link0="https://example.com/target1.html" data_link1="https://example.com/target2.html" data_link2="https://example.com/target3.html" data_link3="https://example.com/target4.html" useragent0="Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A403 Safari/602.1" useragent1="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0.3 Safari/604.5.6" useragent3="Mozilla/5.0 (Windows 7; ) Gecko/geckotrail Firefox/firefoxversion" wget --user-agent="$user_agent[$((RANDOM % 3))]" "$datei_link$((RANDOM % 3))"
不幸的是不起作用。
至於您需要檢索所有 url,更好的方法是使用shuf (GNU/linux coreutils) (或
sort -R
coreutils):shuf file | xargs wget
文件 :
$ cat file "https://example.com/target1.html" "https://example.com/target2.html" "https://example.com/target3.html" "https://example.com/target4.html"
man 1 shuf
姓名
shuf - 生成隨機排列
新評論、新需求、新程式碼:
(需要隨機使用者代理)
$ cat uas Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.100 Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) like Gecko
程式碼 :
shuf file | while read url; do wget --user-agent="$(shuf -n1 uas)" "$url" done
如果您喜歡保持自己的方式(一個網址):
data_link=( "https://example.com/target1.html" "https://example.com/target2.html" "https://example.com/target3.html" "https://example.com/target4.html" ) user_agent=( "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A403 Safari/602.1" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0.3 Safari/604.5.6" "Mozilla/5.0 (Windows 7; ) Gecko/geckotrail Firefox/firefoxversion" ) wget --user-agent="${user_agent[RANDOM % ${#user_agent[@]} ]}" "${data_link[RANDOM % ${#data_link[@]}]}"
您對所有網址和使用者代理的方式(都是隨機的):
for i in $(seq 0 $((${#data_link[@]} -1)) | shuf); do wget -U "${user_agent[RANDOM % ${#user_agent[@]}]}" "${data_link[i]}" done