के साथ एक दूरस्थ फ़ाइल खोलना दूरस्थ वेब सर्वर पर फ़ाइलों को संपादित करने के लिए मेरा वर्तमान समाधान संपादन करने के लिए रिमोट मशीन और टेक्स्टवंग्लर ब्राउज़ करने के लिए प्राप्त करना है। लेकिन चूंकि मैं रिमोट मशीन पर कमांड लाइन को नेविगेट कर रहा हूं (लेकिन वीआईएम का उपयोग करने के लिए पर्याप्त आरामदायक नहीं है ...), मैं रिमोट मशीन पर 'open filename.txt' जैसे कुछ टाइप करने में सक्षम होना चाहता हूं और मेरे स्थानीय मशीन पर TextWrangler खोलें। मैंने एक विकल्प के रूप में चारों ओर फेंक दिया "रिवर्स सुरंग" शब्द सुना है, लेकिन मुझे नहीं पता कि आगे क्या करना है। किसी भी सुझाव की बहुत सराहना की जाती है - धन्यवाद!TextWrangler
उत्तर
मुझे लगता है कि आप जो संदर्भ दे रहे हैं उसे एसएसएच पर "एक्स 11 फॉरवर्डिंग" कहा जाता है। कॉन्फ़िगरेशन के लिए ssh_config (5) manpage पर एक नज़र डालें (या '-X' पैरामीटर के साथ 'ssh' का उपयोग करें)। जहां तक मुझे पता है, यह केवल एक्स 11 प्रोग्राम (जीवीआईएम, xemacs, आदि) के साथ काम करता है, क्योंकि संपादक वास्तव में उस मेजबान पर चल रहा है जिसे आप कनेक्ट कर रहे हैं - केवल आपकी स्थानीय मशीन पर डिस्प्ले सामान होता है। तो TextWrangler एक विकल्प नहीं है, क्योंकि यह X11 प्रोग्राम नहीं है।
मैं दूरस्थ संपादन के लिए इंटरैकी (नोल्ब से) का उपयोग करता हूं। यह एक काफी उन्नत FTP/sftp क्लाइंट है जो आपको अपनी दूरस्थ फ़ाइलों का खोजक-शैली दृश्य देता है और आपको उन फ़ाइलों पर काम करने के लिए अपने पसंदीदा संपादक का उपयोग करने की अनुमति देता है।
यदि आप इस तरह के कार्यक्रम के लिए भुगतान नहीं करना चाहते हैं, तो मिशिगन की यूनिवर्सिटी से उपलब्ध "फूगु" नामक ओपन-सोर्स प्रोग्राम है जिसका आप भी उपयोग कर सकते हैं।
व्यक्तिगत रूप से, मैं साइबरडक का उपयोग अपने एस/एफ़टीपी ब्राउज़र के रूप में करता हूं। साइबरडक की वरीयताओं में, आप दूरस्थ फ़ाइलों को संपादित करने के लिए एक डिफ़ॉल्ट पाठ संपादक को परिभाषित कर सकते हैं। अब जब मैं एक फ़ाइल चुनता हूं तो मैं सिर्फ सीएमडी + के हिट कर सकता हूं, और यह TextWrangler में खुल जाएगा। जब भी मैं सहेजता हूं, परिवर्तन स्वचालित रूप से दूरस्थ फ़ाइल में स्थानांतरित हो जाते हैं।
मैं वास्तव में वही काम करने की तलाश में था, और कोई भी इसे लिख नहीं पाया था, इसलिए मैंने आज इसे समझ लिया।
वहाँ 2 की आवश्यकता है और 3 इस के लिए वैकल्पिक भागों है:
- दोनों कंप्यूटर() की आवश्यकता
- अपने मशीन() की आवश्यकता
- को रिमोट मशीन से एक ssh सुरंग सेट अप पर ssh लॉगइन सक्षम एसएस सुरंग (वैकल्पिक)
- रिमोट मशीन (वैकल्पिक)
- एसएसएच कुंजी सेट अप करने के लिए एक उपनाम सेट अप करें ताकि आपको हर बार अपना पासवर्ड दर्ज न करना पड़े (वैकल्पिक)
आपको आदेशों को चलाने के लिए स्थानीय से दूरस्थ तक ssh करने में सक्षम होना चाहिए, और आपको दूरस्थ से स्थानीय तक ssh करने में सक्षम होना चाहिए ताकि यह TextWrangler को आदेश भेज सके।
ssh -f -N -R 10022:localhost:22 [username on remote machine]@[remote machine hostname]
-f और एन झंडे पृष्ठभूमि में ssh रख दिया और आपकी मशीन पर तुम्हें छोड़:
ssh सुरंग की स्थापना करने के लिए, आप की तरह अपने स्थानीय मशीन पर एक कमांड को चलाने के लिए की जरूरत है। -R ध्वज रिमोट कंप्यूटर पर एक पोर्ट को आपके स्थानीय कंप्यूटर पर एक बंदरगाह से बांधता है। पोर्ट 10022 पर रिमोट मशीन से संपर्क करने वाले कुछ भी आपके स्थानीय कंप्यूटर पर पोर्ट 22 पर भेजे जाएंगे। रिमोट पोर्ट कुछ भी हो सकता है जो आप चाहते हैं, लेकिन आपको विवादों से बचने के लिए पोर्ट> 1024 चुनना चाहिए और इसलिए आपको जड़ नहीं होना चाहिए। मैंने 10022 चुना क्योंकि यह 22 के एसएसएच के डिफ़ॉल्ट बंदरगाह के समान है। अपने उपयोगकर्ता नाम और मशीन नाम के साथ ब्रैकेट को बदलें।
आपको लॉग इन करने के बाद इसे चलाने की आवश्यकता होगी।कमांड को अपने आप को आसान बनाने के लिए, आप अपनी बैश प्रोफ़ाइल में उपनाम जोड़ सकते हैं। अपने स्थानीय ~/.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 (या जो भी बंदरगाह आप पहले चुना गया) का उपयोग करने के कहते हैं। यह रिमोट मशीन को आपकी स्थानीय मशीन से कनेक्ट करने और इंटरैक्टिव एसएसएच सत्र खोलने के बिना डबल कोट्स में कमांड निष्पादित करने का कारण बन जाएगा। उद्धरणों में आदेश वह आदेश है जिसे आप अपनी स्थानीय मशीन पर चलाएंगे, टेक्स्टवैंगलर में दूरस्थ फ़ाइल खोलने के लिए।
कमांड को अपने आप में आसान बनाने के लिए, आप अपनी बैश प्रोफ़ाइल में एक फ़ंक्शन जोड़ सकते हैं। अपने रिमोट ~/.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/
दिखता है कि के माध्यम से संपर्क में नहीं है एक अच्छा समाधान की तरह। लेकिन सुरंग क्या है? क्या आप इस सुरंग के बजाय सीधे अपने कंप्यूटर पर दूसरा एसएसएच कनेक्शन (संपादित करने वाला आदेश नहीं चला सकते)? – Vortexfive
मुझे यहां दृष्टिकोण पसंद है, भले ही यह डराना। –
मुझे लगता है कि यह कमांड लाइन से खोलने की अनुमति देगा नहीं है, लेकिन
EclipseRemote-System-Explorer साथ भी ssh कनेक्शन
FileZilla के माध्यम से फ़ाइलों के संपादन का समर्थन के रूप में इस कार्यक्षमता प्रदान करता है कुंआ। You can download it here। एक बार जब आप अपने एसएफटीपी से कनेक्ट हो जाते हैं तो आप टेक्स्ट फ़ाइल पर राइट-क्लिक कर सकते हैं और इसे अपनी पसंद के टेक्स्ट एडिटर के साथ खोल सकते हैं।
मिनिमल जवाब
आप Apple स्क्रिप्ट का उपयोग कर सकते हैं।तो कमांड लाइन से इस पर अमल:
osascript <<EOF
tell application "TextWrangler"
activate
open location {"sftp://myusername:@my.server:22222//home/username/.bashrc"}
end tell
EOF
नोट्स
- जाहिर है आप हर मंगलाचरण पर एक यहाँ दस्तावेज़ टाइप करने के लिए नहीं करना चाहते, इसलिए मेरे सुझाव एक के अंदर इस तर्क डाल करने के लिए किया जाएगा नियमित रूप से खोल स्क्रिप्ट:
osascript <<EOF tell application "TextWrangler" activate open location {"$1"} end tell EOF
तो इस तरह स्क्रिप्ट आह्वान:
+०१२३५१६४१०६sh ~/bin/textwrangler.sh "sftp://myusername:@my.server:22222//home/username/.bashrc"
- मेजबान-योग्य पथ निर्दिष्ट करना हर बार थकाऊ हो सकता है ताकि आपकी स्क्रिप्ट में हार्डकोड हो या आपके खोल के माध्यम से एक कीस्ट्रोक पर स्क्रिप्ट आमंत्रण को बाध्य कर सकें। बैश के लिए:
bind '"\et":"sh ~/bin/textwrangler.sh \"sftp://myusername:@my.server:22222/\""'
अब आप दबानेAlt-t
मैन द्वारा आदेश के बहुमत उत्पन्न, पाठ Wranger ssh से अधिक फ़ाइलों को संपादित करने की क्षमता के साथ इतना सुविधाजनक है और यह कमांड लाइन :( –