我在遠程Web服務器上編輯文件的當前解決方案是使用Fetch瀏覽遠程機器和TextWrangler進行編輯。但是由於我在遠程機器上越來越舒服地瀏覽命令行(但對於使用VIM來說不夠舒服......),我希望能夠在遠程機器上輸入類似'open filename.txt'的內容並在我的本地機器上打開TextWrangler。我聽說「逆向隧道」這個術語作爲一種選擇被拋棄了,但我不知道下一步該怎麼做。任何建議都非常感謝 - 謝謝!用TextWrangler打開遠程文件
回答
我想你所指的是通過ssh被稱爲「X11轉發」。看一下ssh_config(5)的man頁面進行配置(或者使用'ssh'和'-X'參數)。據我所知,這隻適用於X11程序(gvim,xemacs等),因爲編輯器實際上是在連接到的主機上運行 - 只有顯示內容發生在本地機器上。所以TextWrangler不是一個選項,因爲它不是一個X11程序。
我使用Interarchy(從nolobe)進行遠程編輯。這是一個相當先進的ftp/sftp客戶端,可以爲您提供遠程文件的查找器式視圖,並允許您使用自己喜歡的編輯器處理這些文件。
如果你不喜歡爲這樣的程序付費,那麼你也可以使用密歇根大學提供的一個名爲「Fugu」的開源程序。
就我個人而言,我使用Cyberduck作爲我的S/FTP瀏覽器。在Cyberduck的偏好設置中,您可以定義一個默認的文本編輯器來編輯遠程文件。現在我可以在選中一個文件時點擊Cmd + K,它將在TextWrangler中打開。無論何時保存,更改都會自動傳輸到遠程文件。
我其實是想做同樣的事情,沒有人寫過它,所以我今天就明白了這一點。
有2個要求和3個可選配件,以這樣的:
- 啓用
- 設置遠程機器的SSH隧道到你的機器(需要)
- 兩臺計算機(必需)ssh登錄設置ssh隧道的別名(可選)
- 爲遠程機器上的TextWrangler設置一個別名(可選)
- 設置ssh密鑰,以便您不必每次都輸入密碼(可選)
您需要能夠從本地ssh到遠程運行命令,並且您需要能夠從遠程ssh到本地,以便它可以將命令發送到TextWrangler。
要建立SSH隧道,你需要在本地計算機上運行一個命令,如:
ssh -f -N -R 10022:localhost:22 [username on remote machine]@[remote machine hostname]
-f和-n標誌把ssh進入的背景,讓你你的機器上。 -R標誌將遠程計算機上的端口綁定到本地計算機上的端口。任何與端口10022上的遠程計算機聯繫的任何內容都將發送到本地計算機上的端口22。遠程端口可以是任何你想要的,但你應該選擇一個> 1024的端口來避免衝突,所以你不必是root。我選擇了10022,因爲它與ssh的默認端口22相似。用您的用戶名和機器名替換括號。
您需要在登錄後運行一次。爲了讓你的命令更容易,你可以在你的bash配置文件中添加一個別名。以下內容添加到您的本地~/.bash_profile
:
alias open-tunnel='ssh -f -N -R 10022:localhost:22 [username on remote machine]@[remote machine hostname]'
當然,你可以選擇任何你喜歡的別名。
一旦你建立通道,你可以在遠程計算機上使用這樣的命令:
ssh -p 10022 [username on local machine]@localhost "edit sftp://[username on remote machine]@[remote machine hostname]//absolute/path/to/file.txt"
-p標誌說,使用端口10022(或任何端口先前選擇)。這將導致遠程機器連接到本地機器,並在雙引號中執行命令而不打開交互式ssh會話。引號中的命令是您將在本地計算機上運行以在TextWrangler中打開遠程文件的命令。
爲了讓自己的命令更輕鬆,您可以在bash配置文件中添加一個函數。以下內容添加到您的遠程~/.bash_profile
:
function edit { if [[ ${1:0:1} = "/" ]]; then abs_path="$1"; else abs_path="`pwd`/$1"; fi; ssh -p 10022 [username on local machine]@localhost "edit sftp://[username on remote machine]@[remote machine hostname]/$abs_path"; }
這是假設你沒有安裝在遠程機器上的TextWrangler命令行工具。如果你這樣做,你應該爲edit
以外的其他功能命名。例如,tw
。這裏,${1:0:1}
查看函數第一個參數的第一個字符,它應該是文件路徑。如果它不以/
開頭,我們通過將當前工作目錄(pwd
)添加到開頭來計算絕對路徑。現在,如果你在遠程機器上的/home/jdoe/some/directory/
和運行edit some/other/directory/file.txt
,下面將要在本地計算機上執行:
edit sftp://[username on remote machine]@[remote machine hostname]//home/jdoe/some/directory/some/other/directory/file.txt
最後,你應該建立SSH密鑰在兩個方向使你不每次提示輸入密碼。這裏有一個指導別人寫道:http://pkeck.myweb.uga.edu/ssh/
,看起來暴露就像一個很好的解決方案,但是隧道是什麼?你不能讓第二個SSH連接(運行編輯命令的那個)直接連接到你的計算機,而不是通過這條隧道嗎? – Vortexfive 2014-02-28 13:50:17
我喜歡這裏的方法,即使它恐嚇。 – 2017-04-11 02:39:52
我不認爲這將允許在命令行打開,但
Eclipse與Remote-System-Explorer還支持通過SSH連接
的FileZilla文件的編輯提供了此功能好。 You can download it here。連接到您的sftp後,您可以右鍵單擊文本文件並使用您選擇的文本編輯器打開它。
最小的答案
您可以使用AppleScript的。因此,在命令行中執行此:
osascript <<EOF
tell application "TextWrangler"
activate
open location {"sftp://myusername:@my.server:22222//home/username/.bashrc"}
end tell
EOF
注意
- 顯然,你不會想每次調用鍵入一個文件在這裏,所以我的建議是把這個邏輯裏面常規shell腳本:
osascript <<EOF tell application "TextWrangler" activate open location {"$1"} end tell EOF
然後調用腳本是這樣的:
sh ~/bin/textwrangler.sh "sftp://myusername:@my.server:22222//home/username/.bashrc"
- 指定主機限定的路徑能得到乏味每次所以無論是硬編碼在腳本中,或通過您的殼結合腳本調用對擊鍵。對於bash:
bind '"\et":"sh ~/bin/textwrangler.sh \"sftp://myusername:@my.server:22222/\""'
現在你按Alt-t
- 1. 使用PHP打開遠程文件
- 2. 打開本地或遠程文件Widget
- 3. 通過http打開遠程文件
- 4. 找到並打開遠程文件
- 5. Eclipse/RSE - 無法打開遠程文件
- 6. 打開遠程文件並寫入它
- 7. PHP/cURL問題打開遠程文件
- 8. 如何在TextWrangler中打開Infile
- 9. ng-map只能打開遠程KML文件而不能打開本地文件?
- 10. 遠程打開gps
- 11. 如何在ASP.Net中使用Server.MapPath打開遠程文本文件?
- 12. 使用藍牙打開遠程設備文件管理器[Android]
- 13. 使用憑證打開遠程共享文件夾
- 14. 如何使用fopen()打開遠程文件?
- 15. 用有效路徑打開遠程pdf文件返回404
- 16. 打開遠程gzip XML文件以用於SimpleXML
- 17. PhpStorm重新打開上次使用的遠程主機文件
- 18. 如何使用Emacs通過HTTP打開遠程文件?
- 19. 在Python中使用paramiko打開遠程文件慢
- 20. ASP.NET從遠程共享發送PDF文件到用戶打開
- 21. 在Python中打開遠程文檔
- 22. 遠程打開網址
- 23. 打開遠程位置
- 24. Shell腳本用Textwrangler排版Lilypond文件
- 25. VIM:在當前緩衝區中的文件夾打開文件,遠程文件
- 26. 下載的jpg,apk文件永遠不會打開,但mp3文件打開
- 27. 打開遠程機器的應用
- 28. 使用getDatabase()打開遠程數據庫
- 29. 使用.NET Report Viewer打開遠程RDL
- 30. 用vim打開一個遠程文件。類似電子郵件的用戶名
人產生廣大的命令,文本Wranger是它的編輯通過ssh文件的能力如此方便,它不是通過命令行:( – 2017-04-11 01:06:44