摘要:在遠程主機中運行命令的語法最近的一個項目中,我們前端需要自己發(fā)布靜態(tài)資源到遠程目標(biāo)服務(wù)器上,中間需要經(jīng)過一個跳板機為什么不用公司內(nèi)部的方式發(fā)布,原因很多,這里就不表述了。
TLDR;
在遠程主機中運行命令的 shell 語法:$: ssh user@host "commands"
最近的一個項目中,我們前端需要自己發(fā)布靜態(tài)資源到遠程目標(biāo)服務(wù)器上,中間需要經(jīng)過一個跳板機(為什么不用公司內(nèi)部的 GitLab 方式發(fā)布,原因很多,這里就不表述了)。前端如果手動發(fā)布的話需要經(jīng)過以下步驟:
把所有靜態(tài)資源壓縮成一個 tgz 包
把壓縮包 scp 到跳板機
ssh 到跳板機
把壓縮包從跳板機 scp 到靜態(tài)資源的目標(biāo)主機
ssh 到目標(biāo)主機
解壓縮壓縮包到指定目錄
執(zhí)行 py 腳本,發(fā)布到 cdn
從上面的步驟可以看出如果手動發(fā)布一個服務(wù)器,大概需要經(jīng)過7個步驟,每次發(fā)布都需要至少 4-5 分鐘時間等待(我們有 12 臺需要發(fā)布的機器,每次發(fā)布都需要 4(從第 3 步開始重復(fù) 12 次) * 12 分鐘),而且如果網(wǎng)絡(luò)不太好的話,等待的時間就更長了;更不要說手動發(fā)布的時候會經(jīng)常忘了步驟且更容易出錯了,每次發(fā)布都好像回到了原始時代。
萬幸的是 ssh 本身支持在遠程主機中運行命令的,語法就是
$: ssh user@host "command1; command2; command3; ...."
此處的 command 應(yīng)該用 "" 包起來,避免 ; 被本地主機當(dāng)做定界符處理。 ok,知道 ssh 的用法,我們寫個 bash 處理一下上面 7 個步驟:
# 打壓縮包并上傳到跳板機的指定目錄 function compress() { tar -zcvf sc.tgz -C build . && scp -r sc.tgz root@xxx.xxx.xxx.xxx:~/oss_download/demo/ } # 通過 ssh 登錄跳板機執(zhí)行 3 - 7 步 # 注意在跳板機跳登錄到目標(biāo)服務(wù)器的時候需要 ssh -tt ,可以在遠程機器上 ssh 到其他的遠程主機并執(zhí)行。詳細的解釋通過 man ssh 查看 # mkidr -p 是如果目標(biāo)機器不存在這個目錄,就先創(chuàng)建這個目錄,保證 cd 或者 tar 的時候不會因為目標(biāo)目錄不存在而引起報錯 function send() { ssh root@xxx.xxx.xxx.xxx "scp -r oss_download/demo/sc.tgz alibaba@${1}:~/ossdowload/data/demo/ ; ssh -tt alibaba@${1} "mkdir -p ossdowload; cd ossdowload; mkdir -p data/demo/sc/${version}; tar -zvxf data/demo/sc.tgz -C data/demo/sc/${version} && rm -rf data/demo/sc.tgz && ./ceph_tmp.py"" } # 執(zhí)行 compress 和 send 函數(shù) function deploy() { compress send ${1} } # 發(fā)送到目標(biāo)服務(wù)器 deploy yyy.yyy.yyy.yy
這是發(fā)布到一個遠程主機的命令的腳本,是不是很簡單?之后如果想發(fā)布到多個遠程主機,只要通過簡單的 while 語句就可以搞定;到這里就算結(jié)束了,大多數(shù)時候前端只需要掌握簡單的 bash 語法,就可以通過自動化腳本節(jié)省了大量的時間去泡妹子,好開心。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/80532.html
摘要:環(huán)境介紹角色系統(tǒng)版本版本準(zhǔn)備工作在被遠程主機上準(zhǔn)備好腳本文件。禁止在目標(biāo)機上執(zhí)行命令,勾選后將會忽略在配置中選項中設(shè)置的命令。服務(wù)使用的用戶名,使用進行連接時為指定的用戶名。在這里填寫在遠程主機上執(zhí)行的命令。 ...
摘要:數(shù)人云今天帶來的文章將分享如何用實現(xiàn)命令行程序的過程中整體思路以及需要注意哪些問題。月日,超越傳統(tǒng)運維之道的話題將在北京延續(xù),四位業(yè)界大牛技術(shù)齊聚,結(jié)合傳統(tǒng)運維現(xiàn)狀及實踐案例,講述的超越之道。 數(shù)人云今天帶來的文章將分享如何用Docker實現(xiàn)PHP命令行程序的CI/CD過程中整體思路以及需要注意哪些問題。 6月10日,《DevOps&SRE超越傳統(tǒng)運維之道》的話題將在北京延續(xù),四位業(yè)界...
摘要:數(shù)人云今天帶來的文章將分享如何用實現(xiàn)命令行程序的過程中整體思路以及需要注意哪些問題。月日,超越傳統(tǒng)運維之道的話題將在北京延續(xù),四位業(yè)界大牛技術(shù)齊聚,結(jié)合傳統(tǒng)運維現(xiàn)狀及實踐案例,講述的超越之道。 數(shù)人云今天帶來的文章將分享如何用Docker實現(xiàn)PHP命令行程序的CI/CD過程中整體思路以及需要注意哪些問題。 6月10日,《DevOps&SRE超越傳統(tǒng)運維之道》的話題將在北京延續(xù),四位業(yè)界...
閱讀 3812·2021-11-23 09:51
閱讀 1115·2021-11-19 11:30
閱讀 3438·2019-08-29 14:16
閱讀 3428·2019-08-29 12:12
閱讀 2432·2019-08-26 13:40
閱讀 3582·2019-08-26 12:21
閱讀 3129·2019-08-26 11:55
閱讀 2301·2019-08-26 11:35