背景:因為很多專案都需要從es中獲取資料,測試不會自己造es資料,所以每次都要問。然而問過之後一段時間就忘了,而且一條一條的造也很累。所以寫了乙個shell指令碼
目的:只需要修改shell指令碼裡的一些引數,然後執行指令碼就能得到造好的資料,再使用批量建立es資料的命令製造資料。簡化製造資料的成本。
指令碼:if [ -n "$mergetag" ]; then
echo -e "\"mergetag\":\"$mergetag\",\c";
fiif [ "$mergetag" == "1" ] ; then
echo -e "\"uuid\":\"$uuid\",\c";
elif [ "$mergetag" == "0" ] ; then
echo -e "\"uuid\":\"$uuid\",\c";
echo -e "\"connectid\":\"$connectid\",\c";
fiecho -e "\"expressionid\":\"6789\",\c"
echo -e "\"soursystem\":\"1\",\c"
echo -e "\"alarmtime\":\"$datetime\",\c"
echo -e "\"actionid\":\"0\",\c"
echo -e "\"alarmsuppress\":\"alarmsuppress\",\c"
echo -e "\"calenderid\":\"1\",\c"
echo -e "\"alarmway\":\"$alarmway\",\c"
echo -e "\"successflag\":\"1\",\c"
echo -e "\"revusers\":\"\"\c"
echo -e "},\c"
echo -e "\"expressionid\":\"6789\",\c"
echo -e "\"metricsetname\":\"cpu\",\c"
echo -e "\"status\":\"$status\",\c"
echo -e "\"timestamp\":\"$datetime\"\c"
echo -e "}"
let "offset++";
}while(( $count>0 ))
douuid=$(cat "/proc/sys/kernel/random/uuid")
if [ $isalarm == 1 ] ; then
alarmlog
else
normallog
filet "count--"
done
遇到的問題:
1. 不會shell,現學了shell。
2. shell將資料輸入到乙個檔案使用 ./eslog.sh >testlog.txt (>是覆蓋檔案內容,>>接著原本的內容輸入)
3.命令批量匯入es資料需要合適非常嚴格,不能有空格,而且單條資料要換行,本條資料內容不能換行如:}
,"normalfields":}
所以必須去除換行,也不能有空格,所以使用輸出為 echo -e "aaa/c" 的命令
4.在widows下編輯好的.sh指令碼上傳到linux時會不能執行,所以需要先
vi eslog.sh 後執行 set ff=unix 指令碼才能正常執行
5.如果早的es資料有中文但是檔案格式不是utf-8也會報錯
Shell 指令碼學習資料蒐集
shell文件 chinaunix上大神 網中人 總結的shell十三問,強烈推薦,這本書講得比較精煉,而且都是一些shell學習中容易把握不住的一些細節難點。每一問都寫得非常精彩。chinaunix上,還有個wingger大神整理的 shell基礎二十篇 這份文件涉及的內容比較多,我沒記錯的話應該...
Shell指令碼 資料清洗
需要做的任務是將上圖類似的格式的檔案進行處理,將年月日小時分別提取出來放到每行的行尾 上圖已清洗好 自己的思路是先用cut命令將每行的年月日小時提取出來,分別給乙個變數,然後再迴圈利用sed命令將年月日小時複製到行尾 實現起來感覺有問題,因為sed命令不熟,sed i不知道能不能實現 簡單了解一下s...
Shell指令碼(三) Shell指令碼入門
1 指令碼格式 指令碼以 bin bash開頭 指定解析器 2 第乙個shell指令碼 helloworld 1 需求 建立乙個shell指令碼,輸出helloworld 2 案例實操 atguigu hadoop101 datas touch helloworld.sh atguigu hadoo...