Shell製造es資料指令碼

2021-10-04 02:36:30 字數 1710 閱讀 5253

背景:因為很多專案都需要從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...