999_thaw_flash.sh
我有一个名为我的脚本/etc/pm/sleep.d
脚本如下:-
export DISPLAY=:0
#!/bin/bash
case "{$1}" in
resume|thaw)
lynx --dump link1 >> file1
lynx --dump link2 >> file1
lynx --dump link3 >> file1
grep "magnet:?xt=urn:btih:" file1 > file2
sed -i 's/^......//' file2
awk '/org%3A1337%2Fannounce/{print;print "";next}1' file2 >> file3
lines=$(wc -l < file3)
echo "no. of line $lines"
if grep silicon+valley+s03e03+720p+hdtv+x265+hevc+ file3;
then
lineno=$(grep -n silicon+valley+s03e03+720p+hdtv+x265+hevc+ file3 | cut -d : -f 1)
echo "current line no :-" $lineno
link=$(head -n $lineno file3 | tail -1)
echo $link
notify-send -i /home/hasan/Desktop/flash/Flash.ico 'Flash is Running' 'Getting silicon valley episode 3'
transmission-remote -a $link
echo $link >> flush
echo "\n\n" >> flush
fi
if grep silicon+valley+s03e05+720p+hdtv+x265+hevc+ file3;
then
lineno=$(grep -n silicon+valley+s03e05+720p+hdtv+x265+hevc+ file3 | cut -d : -f 1)
echo "current line no :-" $lineno
link=$(head -n $lineno file3 | tail -1)
echo $link
notify-send -i /home/hasan/Desktop/flash/Flash.ico 'Flash is Running' 'Getting silicon valley episode 5'
transmission-remote -a $link
echo $link >> flush
echo "\n\n" >> flush
fi
if grep silicon+valley+s03e06+720p+hdtv+x265+hevc+ file3;
then
lineno=$(grep -n silicon+valley+s03e06+720p+hdtv+x265+hevc+ file3 | cut -d : -f 1)
echo "current line no :-" $lineno
link=$(head -n $lineno file3 | tail -1)
echo $link
notify-send -i /home/hasan/Desktop/flash/Flash.ico 'Flash is Running' 'Getting silicon valley episode 6'
echo episode 6 of silicon valley online
transmission-remote -a $link
echo $link >> flush
echo "\n\n" >> flush
fi
if grep silicon+valley+s03e07+720p+hdtv+x265+hevc+ file3;
then
lineno=$(grep -n silicon+valley+s03e07+720p+hdtv+x265+hevc+ file3 | cut -d : -f 1)
echo "current line no :-" $lineno
link=$(head -n $lineno file3 | tail -1)
echo $link
notify-send -i /home/hasan/Desktop/flash/Flash.ico 'Flash is Running' 'Getting silicon valley episode 7'
echo episode 7 of silicon valley online
transmission-remote -a $link
echo $link >> flush
echo "\n\n" >> flush
fi
if grep silicon+valley+s03e08+720p+hdtv+x265+hevc+ file3;
then
lineno=$(grep -n silicon+valley+s03e08+720p+hdtv+x265+hevc+ file3 | cut -d : -f 1)
echo "current line no :-" $lineno
link=$(head -n $lineno file3 | tail -1)
echo $link
notify-send -i /home/hasan/Desktop/flash/Flash.ico 'Flash is Running' 'Getting silicon valley episode 8'
echo episode 8 of silicon valley online
transmission-remote -a $link
echo $link >> flush
echo "\n\n" >> flush
fi
if grep silicon+valley+s03e09+720p+hdtv+x265+hevc+ file3;
then
lineno=$(grep -n silicon+valley+s03e09+720p+hdtv+x265+hevc+ file3 | cut -d : -f 1)
echo "current line no :-" $lineno
link=$(head -n $lineno file3 | tail -1)
echo $
notify-send -i /home/hasan/Desktop/flash/Flash.ico 'Flash is Running' 'Getting silicon valley episode 9'
echo episode 9 of silicon valley online
transmission-remote -a $link
echo $link >> flush
echo "\n\n" >> flush
fi
if grep silicon+valley+s03e10+720p+hdtv+x265+hevc+ file3;
then
lineno=$(grep -n silicon+valley+s03e10+720p+hdtv+x265+hevc+ file3 | cut -d : -f 1)
echo "current line no :-" $lineno
link=$(head -n $lineno file3 | tail -1)
echo $link
notify-send -i /home/hasan/Desktop/flash/Flash.ico 'Flash is Running' 'Getting silicon valley episode 10'
echo episode 10 of silicon valley online
transmission-remote -a $link
echo $link >> flush
echo "\n\n" >> flush
fi
;;
esac
我希望语法正确并且脚本放置在正确的文件夹中。
系统恢复时不会执行该脚本。
我哪里错了?
我努力了:
- 唤醒时运行脚本
- 如何在从挂起恢复后执行命令
- 系统从休眠状态恢复到磁盘后如何运行脚本
- 如何在暂停恢复 sony vaio ubuntu 12 04 时运行脚本
- 打开盖子后运行脚本
- 如何在挂起返回时运行命令
但似乎没有什么能帮助我。
PS 脚本在终端上运行良好
日志:-
May 22 20:39:16 user-550p5c-550p7c systemd-sleep[19426]: /lib/systemd/system-sleep/flush failed with error code 1.
May 22 20:39:16 user-550p5c-550p7c systemd-sleep[19426]: /lib/systemd/system-sleep/Flash.ico failed with error code 1.
May 22 20:39:16 user-550p5c-550p7c systemd-sleep[19426]: /lib/systemd/system-sleep/file3 failed with error code 1.
May 22 20:39:16 user-550p5c-550p7c systemd-sleep[19424]: Failed to connect to non-global ctrl_ifname: (nil) error: No such file or directory
May 22 20:39:16 user-550p5c-550p7c systemd-sleep[19424]: Suspending system...
May 22 20:39:23 user-550p5c-550p7c systemd-sleep[19424]: System resumed.
May 22 20:39:23 user-550p5c-550p7c systemd-sleep[19424]: Failed to connect to non-global ctrl_ifname: (nil) error: No such file or directory
May 22 20:39:23 user-550p5c-550p7c systemd-sleep[19459]: /lib/systemd/system-sleep/wpasupplicant failed with error code 255.
May 22 20:39:23 user-550p5c-550p7c systemd-sleep[19459]: /lib/systemd/system-sleep/Flash.ico failed with error code 1.
May 22 20:39:23 user-550p5c-550p7c systemd-sleep[19459]: /lib/systemd/system-sleep/file3 failed with error code 1.
May 22 20:39:23 user-550p5c-550p7c systemd-sleep[19459]: /lib/systemd/system-sleep/file1 failed with error code 1.
May 22 20:39:23 user-550p5c-550p7c systemd-sleep[19459]: /lib/systemd/system-sleep/file2 failed with error code 1.
May 22 20:39:23 user-550p5c-550p7c systemd-sleep[19459]: /lib/systemd/system-sleep/999_thaw_flash.sh failed with error code 1.
May 22 20:39:23 user-550p5c-550p7c systemd-sleep[19459]: /lib/systemd/system-sleep/flush failed with error code 1.
May 22 20:39:25 user-550p5c-550p7c systemd-sleep[19424]: /dev/sda:
May 22 20:39:25 user-550p5c-550p7c systemd-sleep[19424]: setting Advanced Power Management level to 0xfe (254)
May 22 20:39:25 user-550p5c-550p7c systemd-sleep[19424]: APM_level = 254
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: Looking up kat.cr
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: Unable to locate remote host kat.cr.
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: Alert!: Unable to connect to remote host.
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: lynx: Can't access startfile https://kat.cr/usearch/the%20flash/
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: Looking up kat.cr
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: Unable to locate remote host kat.cr.
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: Alert!: Unable to connect to remote host.
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: lynx: Can't access startfile https://kat.cr/usearch/gotham/
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: Looking up kat.cr
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: Unable to locate remote host kat.cr.
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: Alert!: Unable to connect to remote host.
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: lynx: Can't access startfile https://kat.cr/usearch/silicon%20valley/
May 22 20:39:30 user-550p5c-550p7c systemd-sleep[19424]: no. of line 0
答案1
#!/bin/bash
##Sorry for bad English.
##usage: script_name.sh silicon valley
##This urlencode fonction is from github project but I couldnt remember who is creator.
urlencode() {
# urlencode <string>
local length="${#1}"
for (( i = 0; i < length; i++ )); do
local c="${1:i:1}"
case $c in
[a-zA-Z0-9.~_-]) printf "$c" ;;
*) printf '%s' "$c" | xxd -p -c1 |
while read c; do printf '%%%s' "$c"; done ;;
esac
done
}
##In this case it doesnt requirement.
urldecode() {
# urldecode <string>
local url_encoded="${1//+/ }"
printf '%b' "${url_encoded//%/\\x}"
}
a=$(lynx --dump "http://kat.cr/usearch/$(urlencode $@)"|grep "magnet"|sed "s/.*&dn=\([^&]*\).*/\1/g"|sed "/^$/d")
line=$(wc -l < <(echo "$a"))
echo "no. of line $line"
for i in 03 05 06 07 08 09 10;do
if [[ $(echo "$a"|grep "silicon.valley.s03e$i.720p.hdtv.x265.hevc") ]];then #Also you can use variable for s03 but this is just example
echo "$a"|grep -n "silicon.valley.s03e$i.720p.hdtv.x265.hevc" #This will print like "8:silicon+valley+s03e03+720p+hdtv+x265+hevc+135mb+shaanig"
lineno=$(echo "$a"|grep -n "silicon.valley.s03e$i.720p.hdtv.x265.hevc"|cut -d: -f1)
link=$(echo "$a"|grep -n "silicon.valley.s03e$i.720p.hdtv.x265.hevc"|cut -d: -f2)
#notify-send -i $HOME/Desktop/flash/Flash.ico 'Flash is Running' "Getting silicon valley episode ${i}"
fi
done
我希望这能让你了解如何使用此脚本。不要对每个字母进行硬编码,只需循环执行即可。此外,如果你确实重复了几个命令,只需添加一个像这样的函数
function repeating_command() {
echo $@ #this will print all argument
#grep -n "$(echo "$@"|cut -d" " -f2-)" $1 #I assume that first argument is filename Other args are for searched by grep.
echo FileName is $1
echo willSearchByGrep is $(echo "$@"|cut -d" " -f2-)
}
#example usage: repeating_command FileName silicon.valley