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