
我使用命令列 Twitter 用戶端,打字機,透過 Linux 機器上的 PuTTY。許多推文包含鏈接,因此有一個/url
打開 url 的命令,該命令在給定的推文中搜索 URL a 並在本地運行命令以啟動具有該 url 的瀏覽器(例如open %U
在 Mac 或firefox -new-tab %U
Linux 上)。
我的問題:是否有可以從 PuTTY 會話中執行的命令來開啟本機(Windows 7)電腦中的 URL? 換句話說:有沒有辦法從 PuTTY 的 SSH 會話中脫離 SSH 會話到達本機電腦?
編輯:另一種方法:是否有 PuTTY 和 Windows ssh 守護程序或 cygwin 或其他東西的組合,我可以使用它來 ssh 到我的本地框(環回)並觸發選項卡打開? 我使用 tmux 進行多路復用,因此我的目標是將所有內容放在一個 putty 視窗中。
答案1
PuTTY 不支援啟動本機應用程序,除非您透過 SSH 連接到本機。一種選擇是安裝西格文在您的 Windows 機器上並安裝 TTYtter。本質上,TTYtter 是 Perl 腳本的集合,假設您也安裝了 Perl,那麼在 Cygwin 上應該可以正常工作。
答案2
所以這在很多情況下可能不起作用,但這是我想到的:
在主機上執行一個服務來偵聽傳入的 URL。
我用了NodeJS沒有特殊原因就在這裡;我確信大多數流行的腳本語言都可以工作。
var http = require('http'), querystring = require('querystring'), cp = require('child_process'), ip = '127.0.0.1', port = 9090, links_opened = 0; //urlopen curl --data "url=%U" 10.0.2.2:9090 %U <- cmd for ttytter http.createServer(function (req, res) { if (req.method == 'POST') { req.on('data', function(chunk) { //get URL var _post = querystring.parse(chunk.toString()), //url has extra quotes for some reason: url_to_open = _post.url.match(/^'(.*)'$/)[1], //these three lines are just for nicely numbered console history (up to 999) link_ind = ++links_opened + ".", ln = link_ind + Array(5 - link_ind.length).join(' ');//pad it console.log( ln + url_to_open); //open tab cp.spawn('c:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe', ['-new-tab', url_to_open]); }); } req.on('end', function() { //respond w/204 (success, no output) res.writeHead(204); res.end(); }); }).listen(port, ip); console.log('Server running at http://' + ip + ":" + port);
將 URL 從主機傳送到訪客(我使用 cURL)。
在 my 中
.ttytterrc
,我這樣定義 urlopen 選項:urlopen curl --data "url=%U" 10.0.2.2:9090 %U
(%U 擴充為 URL:參見網址開啟)。
我呼叫 /url <tweet ID>,它向我的主機發送請求,節點服務在我目前的瀏覽器視窗中開啟一個新分頁。我確信這裡存在許多潛在的安全問題,但只要有適當的防火牆設定、nodeJS 腳本中的 IP 檢查等,這些都不是問題。無論如何,它對我有用!