2009-09-01 36 views
8

Giải pháp hiện tại của tôi để chỉnh sửa tệp trên máy chủ web từ xa là sử dụng Tìm nạp để duyệt qua máy từ xa và TextWrangler để thực hiện chỉnh sửa. Nhưng kể từ khi tôi nhận được thoải mái hơn điều hướng dòng lệnh trên máy từ xa (nhưng không đủ thoải mái để sử dụng VIM ...), tôi muốn có thể gõ một cái gì đó như 'mở filename.txt' trên máy từ xa và có TextWrangler mở trên máy cục bộ của tôi. Tôi đã nghe thuật ngữ "đảo ngược đường hầm" ném xung quanh như một lựa chọn, nhưng tôi không biết phải làm gì tiếp theo. Mọi đề xuất đều được đánh giá cao - cảm ơn!Mở tệp từ xa bằng TextWrangler

+0

Man, Text Wranger rất thuận tiện với khả năng chỉnh sửa các tập tin qua ssh và nó không tiếp xúc thông qua các dòng lệnh :( –

Trả lời

1

Tôi nghĩ rằng những gì bạn đang đề cập đến được gọi là "chuyển tiếp X11" trên ssh. Hãy xem ssh_config (5) manpage để cấu hình (hoặc chỉ sử dụng 'ssh' với tham số '-X'). Theo tôi biết, điều này chỉ làm việc với các chương trình X11 (gvim, xemacs, vv), bởi vì trình soạn thảo thực sự đang chạy trên máy chủ mà bạn đang kết nối - chỉ hiển thị nội dung trên máy cục bộ của bạn. Vì vậy, TextWrangler không phải là một lựa chọn, bởi vì nó không phải là một chương trình X11.

Tôi sử dụng Chế độ quân chủ (từ nolobe) để chỉnh sửa từ xa. Nó là một trình khách ftp/sftp khá tiên tiến cung cấp cho bạn một khung nhìn kiểu tìm kiếm của các tệp từ xa của bạn và cho phép bạn sử dụng trình soạn thảo yêu thích của mình để làm việc trên các tệp đó.

Nếu bạn không muốn trả tiền cho một chương trình như vậy, có một chương trình nguồn mở được gọi là "Fugu" có sẵn từ Đại học Michigan mà bạn cũng có thể sử dụng.

4

Cá nhân, tôi sử dụng Cyberduck làm trình duyệt S/FTP của mình. Trong sở thích của Cyberduck, bạn có thể định nghĩa một trình soạn thảo văn bản mặc định để chỉnh sửa các tập tin từ xa. Bây giờ tôi có thể chỉ cần nhấn Cmd + K khi tôi có một tập tin được chọn, và nó sẽ mở ra trong TextWrangler. Bất cứ khi nào tôi lưu, các thay đổi sẽ tự động được chuyển sang tệp từ xa.

3

Tôi thực sự đang tìm cách làm điều tương tự và không ai viết nó lên, vì vậy tôi đã tìm ra điều này ngay hôm nay.

Có 2 yêu cầu và 3 phần tùy chọn này:

  1. Enable ssh đăng nhập trên cả hai máy tính (bắt buộc)
  2. Thiết lập một đường hầm ssh từ máy tính từ xa vào máy của bạn (bắt buộc)
  3. Thiết lập bí danh cho đường hầm ssh (tùy chọn)
  4. Thiết lập bí danh cho TextWrangler trên máy từ xa (tùy chọn)
  5. Thiết lập khóa ssh để bạn không phải nhập mật khẩu mỗi lần (tùy chọn)

Bạn cần có khả năng ssh từ cục bộ đến điều khiển từ xa để chạy lệnh và bạn cần có khả năng ssh từ xa sang cục bộ để có thể gửi lệnh tới TextWrangler.

Để thiết lập đường hầm ssh, bạn cần phải chạy một lệnh trên máy tính cục bộ của bạn như:

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

Các -f và -N cờ đặt ssh vào nền và để lại cho bạn trên máy tính của bạn. Cờ -R liên kết một cổng trên máy tính từ xa với một cổng trên máy tính cục bộ của bạn. Bất cứ điều gì liên hệ với máy từ xa trên cổng 10022 sẽ được gửi đến cổng 22 trên máy tính cục bộ của bạn. Cổng từ xa có thể là bất cứ điều gì bạn muốn, nhưng bạn nên chọn một cổng> 1024 để tránh xung đột và do đó bạn không cần phải root. Tôi đã chọn 10022 vì nó tương tự như cổng mặc định của ssh là 22. Thay thế các dấu ngoặc vuông bằng tên người dùng và tên máy của bạn.

Bạn sẽ cần chạy điều đó một lần sau khi bạn đăng nhập.Để làm cho lệnh dễ dàng hơn trên chính mình, bạn có thể thêm một bí danh trong hồ sơ bash của bạn. Thêm thông tin sau vào địa chỉ ~/.bash_profile địa phương:

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

Tất nhiên, bạn có thể chọn bất kỳ tên bí danh nào bạn thích.

Một khi bạn đã thiết lập đường hầm, bạn có thể sử dụng một lệnh như thế này trên máy từ xa:

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

Cờ -p nói để sử dụng cổng 10022 (hoặc bất cứ cổng bạn đã chọn trước đó). Điều này sẽ làm cho máy từ xa kết nối với máy cục bộ của bạn và thực hiện lệnh trong dấu ngoặc kép mà không cần mở một phiên ssh tương tác. Lệnh trong dấu ngoặc kép là lệnh bạn sẽ chạy trên máy cục bộ của mình để mở tệp từ xa trong TextWrangler.

Để làm cho lệnh dễ dàng hơn với chính mình, bạn có thể thêm chức năng vào hồ sơ bash của bạn. Thêm dòng sau vào từ xa ~/.bash_profile của bạn:

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"; } 

này được giả định rằng bạn không có các công cụ dòng lệnh TextWrangler cài đặt trên máy từ xa. Nếu bạn làm như vậy, bạn nên đặt tên cho chức năng khác ngoài edit. Ví dụ: tw. Ở đây, ${1:0:1} xem ký tự đầu tiên của tham số đầu tiên của hàm, đây là đường dẫn tệp. Nếu nó không bắt đầu bằng /, chúng tôi tìm ra đường dẫn tuyệt đối bằng cách thêm thư mục làm việc hiện tại (pwd) vào đầu. Bây giờ, nếu bạn đang ở trên máy từ xa trong /home/jdoe/some/directory/ và bạn chạy edit some/other/directory/file.txt, sau đây sẽ được thực hiện trên máy tính địa phương của bạn:

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

Cuối cùng, bạn nên thiết lập phím ssh theo cả hai hướng, do đó bạn không nhắc nhở cho một mật khẩu mỗi lần duy nhất. Đây là hướng dẫn người khác đã viết: http://pkeck.myweb.uga.edu/ssh/

+0

Đó vẻ Như một giải pháp tốt đẹp, nhưng đường hầm cho là gì? Bạn không thể thực hiện kết nối ssh thứ hai (lệnh chạy lệnh chỉnh sửa) trực tiếp vào máy tính của bạn thay vì qua đường hầm này? – Vortexfive

+0

Tôi thích cách tiếp cận ở đây, mặc dù đáng sợ. –

2

Tôi không nghĩ rằng điều này sẽ cho phép mở tỉ số từ dòng lệnh, nhưng

Eclipse với Remote-System-Explorer cũng hỗ trợ chỉnh sửa các tập tin thông qua kết nối ssh

0

FileZilla cung cấp chức năng này như tốt. You can download it here. Khi bạn đã kết nối với sftp của mình, bạn có thể nhấp chuột phải vào tệp văn bản và mở nó bằng trình chỉnh sửa văn bản bạn chọn.

0

câu trả lời tối thiểu

Bạn có thể sử dụng AppleScript.Vì vậy, từ dòng lệnh thực hiện điều này:

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

Ghi chú

  1. Rõ ràng bạn sẽ không muốn gõ văn bản ở đây trên mỗi invocation, vì vậy tôi khuyên là nên đặt logic này bên trong một shell script thường xuyên: osascript <<EOF tell application "TextWrangler" activate open location {"$1"} end tell EOF

Sau đó gọi kịch bản như thế này:

sh ~/bin/textwrangler.sh "sftp://myusername:@my.server:22222//home/username/.bashrc" 
  1. Chỉ định đường dẫn đủ điều kiện lưu trữ có thể tẻ nhạt mỗi lần để mã hóa trong tập lệnh hoặc liên kết lời gọi tập lệnh với tổ hợp phím. Đối với bash: bind '"\et":"sh ~/bin/textwrangler.sh \"sftp://myusername:@my.server:22222/\""' Bây giờ bạn tạo ra phần lớn các lệnh bằng cách nhấn Alt-t
Các vấn đề liên quan