TOP ▲
itcore TOP
> TIPS
> urlencode.php
タグ:urlencode シェル 関数 curl urlencodeするシェル関数 | itcore 2017年
curlのバージョンが古くて--data-urlencodeが使えない場合などに、自力でURLエンコードする。
シェルの例 log_put.sh
# [URLエンコード関数]
# "$@"のようにシェル変数を""でくくらないと改行が空白になるので注意。
escape() {
local s1
s1="$@"
# %を最初にエンコードする。
s1="${s1//\%/%25}"
s1="${s1// /%20}"
s1="${s1//\!/%21}"
s1="${s1//\"/%22}"
s1="${s1//\#/%23}"
s1="${s1//\$/%24}"
s1="${s1//\&/%26}"
s1="${s1//\'/%27}"
s1="${s1//\(/%28}"
s1="${s1//\)/%29}"
s1="${s1//\*/%2A}"
s1="${s1//\+/%2B}"
s1="${s1//\,/%2C}"
s1="${s1//\//%2F}"
s1="${s1//\:/%3A}"
s1="${s1//\;/%3B}"
s1="${s1//\</%3C}"
s1="${s1//\=/%3D}"
s1="${s1//\>/%3E}"
s1="${s1//\?/%3F}"
s1="${s1//\@/%40}"
s1="${s1//\[/%5B}"
s1="${s1//\]/%5D}"
s1="${s1//\^/%5E}"
s1="${s1//\`/%60}"
s1="${s1//\{/%7B}"
s1="${s1//\|/%7C}"
s1="${s1//\}/%7D}"
s1="${s1//\~/%7E}"
echo "$s1"
}
data1=[cron]`crontab -l | grep rsync`
data2=[rsync]`ls -l /root/rsync.log`
data3=[sent]`tail -1 /root/rsync.log`
data="$data1 $data2 $data3"
data=`escape "$data"`
curl -k -s -S -X POST "https://[host]/log_put.php" \
--data "host=`hostname`" \
--data "data=$data" \
-u "user:password"