工具|sync-deply:用命令掌握你的遠端主機
不知道你是否也曾像我一樣面對這樣的問題:想要簡單的在遠端主機上上傳下載資料檔案、執行個命令,但要麼需要通過ssh直接登入主機,要麼需要頻繁的輸入ssh或scp等命令以及ip地址,密碼。
ofollow,noindex">sync-deploy 工具集是我去年在解決這樣的問題以及遠端部署PBS計算任務不便時開始寫,其實質是一堆shell指令碼。最近考慮到我有時候需要增加主機、切換主機,於是又新增了相應的命令,因此也再次彙總整理一下這些命令。
只要系統可以執行shell,基本都能用這個工具,因為它的實現基本就是對ssh和scp的封裝。
下面我對目前可用的10個命令進行簡要介紹,一些詳情可以閱讀https://github.com/ShixiangWang/sync-deploy 。
主要分為下載、配置和使用三部分,前兩部分都是一次性步驟。
下載
或克隆:
git clone https://github.com/ShixiangWang/sync-deploy.git
下載後執行add_path.sh
指令碼將命令新增到環境路徑中,這樣無論你處於什麼目錄都能使用。
cd sync-deploy/src ./add_path.sh
如果是蘋果系統,預設會將路徑寫入~/.bash_profile
;如果是其他系統,預設會寫入~/.bashrc
。如果使用的其他sh,比如zsh,那麼系統識別路徑不是上述兩者,可以通過-d
選項指定。
除了sync-command
命令沒有選項,其他命令基本都有選項需要指定。
準備與配置
首先在伺服器端配置本地機器的公鑰,以便於實現無密碼檔案或命令傳輸。
最簡單的方式是在終端鍵入ssh-keygen
然後一路按回車鍵。
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/wangshx/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/wangshx/.ssh/id_rsa. Your public key has been saved in /c/Users/wangshx/.ssh/id_rsa.pub. The key fingerprint is: SHA256:XaNcpRZHmMp65eHKDzYIzbXYB0ZAb3EHYc7T3azgQD4 wangshx@wsx-liuxslab The key's randomart image is: +---[RSA 2048]----+ |.o.+ **=| |= *oB o.| |.E.@ . +| |o Oo@o+ . | |. S.*+o..| |.....o| |.o+.| |.oo| |..| +----[SHA256]-----+
如果你使用的是windows7或者10,不知道怎麼使用ssh,我推薦你安裝git bash
,windows10使用者也可以開啟Ubuntu子系統以便於使用。
將公鑰id_sra.pub
(本地機器.ssh子目錄下)中文字內容拷貝到伺服器.ssh子目錄中的authorized_keys
中,放在已有文字後面。如果該檔案不存在則建立。
進行測試,如果不需要密碼登入則成功。
然後點選開啟當前目錄(src/)的sync-setting
檔案,將遠端主機的host名與ip地址改為你自己的(也可以使用後面的sync-hostadd
命令)。
如果ssh服務還沒有開啟,請參考Linux/2015-01/112045.htm" target="_blank" rel="nofollow,noindex">https://www.linuxidc.com/Linux/2015-01/112045.htm 解決。
使用
使用可以分為4種類型:
- 上傳/下載檔案
- 執行命令或指令碼
- 增加/刪除以及切換主機
- PBS任務計算
下面我列出對應的命令,使用非常簡單,可以通過命令 + h選項
的方式閱讀使用說明(除了sync-command
),比如sync-download
下載檔案(資料夾):
Usage: sync-download -n 'remote_files' -d localdir >>> remote_files: files you wanna download, can be directories or filenames >>> localdir: The only one directory you wanna transfer to. >>>Do not set more than one destdir, error will occur. >>>Please do note the 'remote_files' must be quoted otherwise you use absolute file path!!! >>> >>> examples: sync-download -n '~/test/*' -d ./test or sync-download -n /public/home/liuxs/test/* -d ./test
上傳/下載檔案
- sync-upload - 上傳檔案(夾)
- sync-download - 下載檔案(夾)
執行命令或指令碼
- sync-commad - 後面直接接執行的遠端主機命令,命令最好用引號括起來,以與本地主機命令或檔案/路徑區別
比如檢視遠端主機家目錄,為展示區別,我看看本地主機家目錄:
$ sync-command 'ls' biodata download practice readme.md soft tmp workspace zhuqi $ ls Applications DocumentsLibraryMusicPublic DesktopDownloadsMoviesPictures
- sync-run 執行遠端主機可執行檔案
增加/刪除以及切換主機
- sync-hostadd 增加主機
- sync-hostdel 刪除主機
- sync-switch 切換主機
PBS任務計算
- sync-template 新建PBS任務模板
- sync-deploy 部署PBS計算任務
- sync-check 檢查PBS任務狀態
配合使用,威力無窮~