2009-09-01 19 views
8

Moje bieżące rozwiązanie do edycji plików na zdalnym serwerze WWW polega na użyciu Fetch do przeglądania komputera zdalnego i TextWranglera w celu wprowadzenia zmian. Ale ponieważ coraz wygodniej poruszam się po linii poleceń na zdalnej maszynie (ale nie jest to wystarczająco wygodne, aby móc używać VIM ...), chciałbym móc napisać coś w rodzaju "open filename.txt" na zdalnym komputerze i otwórz TextWrangler na moim lokalnym komputerze. Słyszałem, że termin "odwrotne tunelowanie" jest używany jako opcja, ale nie mam pojęcia, co dalej robić. Wszelkie sugestie są bardzo mile widziane - dziękuję!Otwieranie zdalnego pliku za pomocą TextWrangler

+0

Człowiek, Tekst Wranger jest tak wygodny ze swojej zdolności do edycji plików przez SSH i nie jest wystawiony przez linię poleceń :( –

Odpowiedz

1

Myślę, że to, o czym mówisz, nazywa się "przekazywanie X11" przez ssh. Spójrz na stronę podręcznika ssh_config (5) do konfiguracji (lub po prostu użyj "ssh" z parametrem "-X"). O ile mi wiadomo, działa to tylko z programami X11 (gvim, xemacs itp.), Ponieważ edytor faktycznie działa na hoście, z którym się łączysz - tylko rzeczy wyświetlane są na twoim lokalnym komputerze. Tak więc TextWrangler nie jest opcją, ponieważ nie jest to program X11.

Używam Interarchy (od nolobe) do zdalnej edycji. Jest to dość zaawansowany klient ftp/sftp, który umożliwia przeglądanie zdalnych plików w stylu wyszukiwania i pozwala na użycie ulubionego edytora do pracy nad tymi plikami.

Jeśli nie chcesz płacić za taki program, możesz skorzystać z programu Open-Source o nazwie "Fugu" dostępnego w Univerity of Michigan.

4

Osobiście używam Cyberduck jako mojej przeglądarki S/FTP. W preferencjach Cyberducka można zdefiniować domyślny edytor tekstu do edycji plików zdalnych. Teraz mogę po prostu nacisnąć Cmd + K, gdy mam wybrany plik, a otworzy się on w TextWrangler. Po każdym zapisaniu zmiany są automatycznie przesyłane do zdalnego pliku.

3

Tak naprawdę chciałem zrobić to samo i nikt tego nie napisał, więc wymyśliłem to dzisiaj.

Jest wymagane 2 i 3 części opcjonalne do tego:

  1. Włącz ssh login na obu komputerach (wymagane)
  2. skonfigurować tunel ssh ze zdalnego urządzenia do komputera (wymagane)
  3. Skonfiguruj alias dla tunelu ssh (opcjonalnie)
  4. Skonfiguruj alias dla TextWrangler na zdalnym komputerze (opcjonalnie)
  5. Ustaw klucze ssh, aby nie trzeba było wpisywać hasła za każdym razem (opcjonalnie)

Musisz mieć możliwość ssh od lokalnego do zdalnego, aby uruchomić polecenia, i musisz mieć możliwość ssh od zdalnego do lokalnego, aby mógł wysyłać polecenia do TextWrangler.

Aby skonfigurować tunel ssh, trzeba uruchomić polecenie na komputerze lokalnym jak:

ssh -f -N -R 10022:localhost:22 [username on remote machine]@[remote machine hostname] 

-f -N flagi i umieścić ssh w tło i zostawić na komputerze. Flaga -R łączy port na komputerze zdalnym z portem na komputerze lokalnym. Wszystko, co ma kontakt ze zdalnym komputerem na porcie 10022, zostanie wysłane do portu 22 na lokalnym komputerze. Zdalny port może być dowolny, ale powinieneś wybrać port> 1024, aby uniknąć konfliktów, więc nie musisz być rootem. Wybrałem 10022, ponieważ jest podobny do domyślnego portu ssh 22. Zamień nawiasy na nazwę użytkownika i nazwę komputera.

Będziesz musiał uruchomić to jeden raz po zalogowaniu.Aby uczynić polecenie łatwiejszym dla siebie, możesz dodać alias do swojego profilu basha. Dodaj poniższe linie do lokalnego ~/.bash_profile:

alias open-tunnel='ssh -f -N -R 10022:localhost:22 [username on remote machine]@[remote machine hostname]' 

Oczywiście, można wybrać cokolwiek alias nazwa chcesz.

Po skonfigurowaniu tunelu, można użyć polecenia jak to na zdalnym komputerze:

ssh -p 10022 [username on local machine]@localhost "edit sftp://[username on remote machine]@[remote machine hostname]//absolute/path/to/file.txt" 

-p flag mówi do korzystania 10022 portu (lub cokolwiek portu wybrał wcześniej). Spowoduje to, że komputer zdalny łączy się z lokalnym komputerem i wykonuje polecenie w podwójnych cudzysłowach bez otwierania interaktywnej sesji ssh. Polecenie w cudzysłowach to polecenie, które można uruchomić na komputerze lokalnym, aby otworzyć zdalny plik w TextWrangler.

Aby ułatwić sobie wykonywanie polecenia, możesz dodać funkcję do swojego profilu bash. Dodaj poniższe linie do zdalnej ~/.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"; } 

to przy założeniu, że nie masz narzędzi wiersza polecenia TextWrangler zainstalowane na komputerze zdalnym. Jeśli tak, powinieneś nazwać funkcję inną niż edit. Na przykład tw. Tutaj ${1:0:1} sprawdza pierwszy znak pierwszego parametru funkcji, który powinien być ścieżką pliku. Jeśli nie zaczyna się od /, obliczamy bezwzględną ścieżkę dodając bieżący katalog roboczy (pwd) na początek. Teraz, jeśli jesteś na zdalnej maszynie w /home/jdoe/some/directory/ i uruchomieniu edit some/other/directory/file.txt dodaje będą wykonywane na komputerze lokalnym:

edit sftp://[username on remote machine]@[remote machine hostname]//home/jdoe/some/directory/some/other/directory/file.txt 

Wreszcie, należy skonfigurować klucze ssh w obu kierunkach, więc nie jesteś monit o hasło za każdym razem. Oto przewodnik ktoś inny napisał: http://pkeck.myweb.uga.edu/ssh/

+0

który wygląda jak fajne rozwiązanie, ale na co jest tunel? Nie możesz zrobić drugiego połączenia ssh (tego, który uruchamia polecenie edycji) bezpośrednio na twoim komputerze zamiast w tym tunelu? – Vortexfive

+0

Podoba mi się podejście tutaj, nawet jeśli jest zastraszające. –

0

FileZilla oferuje taką funkcjonalność jak dobrze. You can download it here. Po połączeniu się z sftpem możesz kliknąć plik tekstowy prawym przyciskiem myszy i otworzyć go za pomocą edytora tekstowego do wyboru.

0

Minimal odpowiedź

Można użyć Applescript.Tak z linii poleceń wykonać to:

osascript <<EOF 
     tell application "TextWrangler" 
     activate 
     open location {"sftp://myusername:@my.server:22222//home/username/.bashrc"} 
end tell 
EOF 

Uwagi

  1. Oczywiście nie chcesz wpisywać tutaj dokument na każdym wywołaniu, więc moja propozycja byłoby umieścić tę logikę Wewnątrz regularne skrypt: osascript <<EOF tell application "TextWrangler" activate open location {"$1"} end tell EOF

Następnie wywołać skrypt tak:

sh ~/bin/textwrangler.sh "sftp://myusername:@my.server:22222//home/username/.bashrc" 
  1. Określanie ścieżki hosta wykwalifikowana może dostać żmudne za każdym razem, więc albo zakodować, że w skrypcie, albo wiązać wywołanie skryptu na naciśnięcie klawisza przez powłokę. Dla bash: bind '"\et":"sh ~/bin/textwrangler.sh \"sftp://myusername:@my.server:22222/\""' teraz generować większość polecenia, naciskając Alt-t
Powiązane problemy