shell指令碼將檔案上載到遠端伺服器上的同一子目錄

對於web開發人員來說,一個非常常見的任務是將單個檔案從開發框的子目錄上載到遠端伺服器的同一子目錄。不幸的是,這最終總是成為一個惱人的手動過程,涉及到在兩臺伺服器上切換目錄,並浪費了大量的時間。...

對於web開發人員來說,一個非常常見的任務是將單個檔案從開發框的子目錄上載到遠端伺服器的同一子目錄。不幸的是,這最終總是成為一個惱人的手動過程,涉及到在兩臺伺服器上切換目錄,並浪費了大量的時間。

所以,我自己編寫了一個shell指令碼來為自己實現自動化,使用scp進行安全的檔案複製。(重要方面)注意:ftp是非常不安全,請改用WinSCP)

要解決的主要問題是,我在開發機器上安裝的WordPress與伺服器上安裝的基本目錄不同。在我的開發機器上是/var/www,在我的伺服器上更像是/var/www/howtogeek/docs/。我決定在指令碼開始的時候把它們移到變數中,如下所示:

[email protected] RDIR=/var/www/howtogeek/docs LDIR=’\/var\/www’

請注意,指令碼中的本地目錄(LDIR)在路徑中的每個/前面都有一個\號。這是因為我們稍後將把它傳遞到指令碼中的sed命令中,所以我們必須轉義這些值。我肯定還有別的辦法,但我不知道。

接下來,我設定自動ssh登入。為此,您需要首先執行ssh keygen實用程式,如下所示:

ssh-keygen -t rsa

然後需要複製~/.ssh/id_rsa.pub公司檔案到遠端伺服器上的~/.ssh/authorized\u keys檔案。如果已在遠端伺服器上建立~/.ssh目錄(可能需要檢查),則可以執行此命令將金鑰複製到:

cat ~/.ssh/id_rsa.pub | ssh user@hostname ‘cat >> .ssh/authorized_keys’

現在我們有了自動ssh登入,這將允許在沒有密碼的情況下使用scp實用程式。現在讓我們看一下指令碼中使用的scp命令:

scp $1 $SSHSERVER:$RDIR`pwd|sed “s/${LDIR}//”`/`echo $1|sed ‘s/.*\///’`

$1是您將傳遞給指令碼的引數,用於嘗試上載的檔名。$SSHSERVER和$RDIR是我們將在指令碼開頭設定的變數,用於設定使用者@主機名以及前面的遠端路徑。

以pwd | sed開頭的第一個塊獲取當前目錄路徑,並去掉與遠端伺服器不匹配的路徑的前一部分,但保留路徑的其餘部分。例如,如果您在/var/www/wp content/中執行命令,sed塊將根據LDIR變數剝離/var/www,但保留/wp content/部分內容。

第二個塊只是確保從傳遞給指令碼的檔名中去掉前面的整個路徑,這樣就可以得到檔名。

例如,如果您命名了指令碼向上.sh並從檔案上的本地/var/www/wp content/plugins/directory執行:

up.sh myplugin.php

這將由shell擴充套件如下:

scp myplugin.php [email protected]:/var/www/howtogeek/docs/wp-content/plugins/myplugin.php

我不再試圖根據本文建立自己的指令碼檔案,而是提供給您下載。這樣就不會有任何問題與特殊字元不工作…是的,我用指令碼上傳自己=)

下載極客-上傳器.sh

只要把它放在你的路的某個地方,你想叫什麼名字都行。我把我的名字改成了“up”,這樣我就可以鍵入“up”檔名.txt“上傳。還要記住開啟它並更改指令碼開頭的變數以匹配您的環境。

這個指令碼應該在任何使用*nix shell和scp實用程式的情況下工作。我使用Ubuntu,但是它應該在安裝了Cygwin的Solaris、OS X甚至Windows上工作。

  • 發表於 2021-04-14 14:07
  • 閱讀 ( 15 )
  • 分類:網際網路

你可能感興趣的文章

如何禁用microsoft office上載中心

... 它的目的是幫助確保在上傳到(或處理“web伺服器”上的文件時)檔案傳輸順暢,正如資訊頁面所說的那樣。實際上,這意味著當您將檔案儲存到OneDrive或遠端伺服器(如SharePoint)時。 ...

  • 發佈於 2021-03-20 03:33
  • 閲讀 ( 59 )

如何使用applescript將bash指令碼轉換為可單擊的應用程式

假設你是一個bash指令碼嚮導,喜歡為不太懂技術的朋友和家人自動化任務。即使你給了他們一個指令碼,完全解決了他們的問題,他們可能仍然擔心自己使用終端。在這種情況下,您不妨手動為它們執行所有操作。 ...

  • 發佈於 2021-03-21 09:39
  • 閲讀 ( 51 )

如何將android裝置轉變成web伺服器

需要低功耗裝置來執行你的網站嗎?要回收web伺服器佔用的空間嗎?你願意與朋友或公眾分享一些資訊,但又沒有足夠的資金來執行一個全面的web伺服器嗎? ...

  • 發佈於 2021-03-21 14:54
  • 閲讀 ( 37 )

使用這些linux命令高效地管理遠端ssh連線

... 如果您執行一個或多個遠端伺服器,通常一整天都要花時間不斷登入。 ...

  • 發佈於 2021-03-28 06:44
  • 閲讀 ( 43 )

使用rsync自動將檔案備份到遠端伺服器

...,無需手動干預即可根據需要將本地檔案自動同步到遠端伺服器。請注意,本指南確實需要訪問遠端Linux伺服器(如AWS),並且是在Ubuntu20.04下編寫的,儘管任何Linux發行版都可以正常工作。 ...

  • 發佈於 2021-03-28 09:36
  • 閲讀 ( 52 )

什麼是ftp?為什麼需要ftp伺服器?

...傳到一個網站,你可以使用FTP將檔案直接傳輸到網站託管伺服器。 ...

  • 發佈於 2021-03-30 13:16
  • 閲讀 ( 44 )

linux下如何使用rclone備份google驅動

...果您想從命令列建立和執行備份呢?或者將該功能合併到指令碼中?這一切都要歸功於一個叫rclone的驚人應用程式。事實上,使用rclone,您可以備份、下載和同步檔案到40多種不同的雲解決方案。就像雲的同步一樣。 安裝rclone ...

  • 發佈於 2021-04-02 18:51
  • 閲讀 ( 50 )

如何在linux上使用xargs命令

...會得到一列檔名。 ls -1 ./*.sh 這將列出當前目錄中的shell指令碼檔案。 我們得到了一個預期的列。如果我們把它透過沙爾格管,我們能得到什麼? ls -1 ./*.sh | xargs 輸出作為一個長文字流寫入終端視窗。 正是這個功能讓xargs將...

  • 發佈於 2021-04-03 07:25
  • 閲讀 ( 35 )

如何在linux上使用ftp命令

...。它以明文形式顯示FTP密碼。任何人在你的網路或你和FTP伺服器之間的網際網路上可以很容易地看到密碼是“MySecretPassword” 在沒有加密的情況下,惡意參與者也可以修改您正在下載或上傳的檔案。 ftp命令 假設您在FTP站點上有...

  • 發佈於 2021-04-03 15:21
  • 閲讀 ( 56 )

如何從bash指令碼獲取系統的地理位置

...簡單的bash指令碼找到遠端Linux系統的地理位置。地理定位伺服器可以幫助您在物理世界中跟蹤它,確保伺服器位於區域熱點。 internet上的每臺伺服器都有一個面向公眾的IP地址。這可以直接分配給伺服器,也可以分配給向該伺服...

  • 發佈於 2021-04-03 22:58
  • 閲讀 ( 47 )
ha_rose
ha_rose

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦