需求:開發使用dev環境,每隔一段時間截乙個版本,發布到sit,將近20個docker,每次都需要乙個乙個地核對映象版本,哪些需要更新哪些沒有更新等。
要想縮減重複勞動,唯有指令碼走起
平時的步驟就是,先到dev,擷取此時正在執行的docker映象,然後儲存為乙個檔案,再到sit,獲取映象,儲存為乙個檔案,再兩個檔案對比,顯示出不同。
更好的做法是不同的就更新,這個後續完善。
#!/bin/bash
password="***"
remotehost=xx
localhost=yy
remotehostname=zz
#################### 在bash指令碼中執行expect指令碼
/usr/bin/expect << eof
############### ssh遠端到dev環境,使用expect來輸入密碼
spawn ssh ttebdadmin@$remotehost
expect
"*password"
}####################匹配到dev的名稱後,將此時執行的docker儲存到乙個檔案
expect "$remotehostname*"
send " sudo docker ps | sort >image-dev \r"
expect "*password"
send "$password\r"
##################再次匹配到主機名後,將檔案傳送到sit
expect "$remotehostname*"
send "scp image-dev ttebdadmin@$localhost:~\r"
expect
"*password"
}set timeout 1
expect eof
eof#######################結束expect,回到bash
######################只提取映象版本,這是因為在expect中執行awk ''報錯,所以放在bash指令碼中執行
echo " ---------begin diff sit to dev-----"
cat /home/ttebdadmin/image-dev | awk ''| sort > image-dev
##########################將sit的映象版本儲存為乙個檔案,對比兩個環境的映象版本
docker ps | awk ''| sort > image-sit
diff -y image-sit image-dev
將上列指令碼儲存為diffdevsitimage1.sh,注意###部分需要刪除,然後還需要給與執行許可權chmod +x diffdevsitimage1.sh
結果
這樣我就能快速得知兩個環境的版本的區別了,新加了什麼映象,哪些映象有更新等。
參考文章:
expect 詳解:
兩個問題的對比
問題1 cf390c 給定若干行聊天記錄 發言人 話 有些聊天記錄的 發言人 是缺失的,已知相鄰對話發言人一定不同,且每個發言人說的話裡都不會包含自己的名字,現給定可能的發言人的集合,請填充每個對話的發言人.來自codeforces round 390 問題2 lc36 給定乙個9 9的矩陣,有些元...
用EXCEPT對比兩個表的資料用還是UNION
問題描述 今天是新系統上線之後第一次跑資料,需要和老系統跑出來的表做對比。完全一樣則專案執行ok,新系統在時間上減少了人工干預,提高了80個百分點。先用老系統跑一次資料,匯入到乙個備份表。再用新系統跑一次,數量和備份表裡面的一樣。心裡坦蕩了一點。再比較裡面每一行資料是否一樣的時候,先是用了如下方式 ...
今天用批處理指令碼遇到的兩個問題
一 設定當前命令列路徑問題 pushd dp0 windows下批處理檔案直接開啟時當前命令列路徑就是當前目錄,而右鍵用管理員許可權開啟時命令列預設路徑時system32,此時要獲取當前批處理檔案的路徑需要使用 dp0,幾個常用的目錄路徑如下 當前碟符 d0 當前路徑 cd 當前執行命令列 0 當前...