3

サーバー上でプログラムを実行する方法はありますか? 例: Firefox、Gimp など

私のコンセプトは、自分の電話でローカルの LAMP サーバーにログインし、テキスト ボックス (例: /usr/bin/firefox) にコマンドを入力し、post メソッドを使用してコマンド文字列を別のサーバーに送信するボタンを押すことです。サーバーでプログラムを起動する PHP スクリプト。これは、移動中に「firefox http://www.blahblah.net」を起動し、firefox を開いた状態でコンピュータに戻る場合に便利です。はい、セキュリティの問題は認識していますが、これは概念実証にすぎません。

exec() および system() コマンドを試しましたが、うまくいかないようです.... 何か間違っていますか?

#!/usr/bin/env ruby

require 'rubygems'
require 'sinatra'

disable :protection # not needed on something this simple
set :port, 11111    # think 1APPX

get '/' do
# this handles both apps (via ?app=...) and files (via ?file=...)

if params[:app] then
    # as a side effect, this also happens to actually run the app, which is
    # pretty much what we wanted in the first place
    @fn = params[:app][1..-2];
    `/usr/bin/env #{@fn}`
elsif params[:file] then
    # bugfix, remove quotes...
    @fn = params[:file][1..-2];
    # xdg-open anyone?
    puts "DEBUG /usr/bin/env xdg-open #{@fn}";
    `"/usr/bin/env xdg-open #{@fn}"`
else
    # nothing...
    404
end

end

not_found do
status 404
"Application #{@fn} not found. Usage: /?app=\"[appname]\" or /?file=\"[filename]\""
end
4

4 に答える 4

3

これには Web アプリケーションを使用しないでください。セキュリティ上のハードルは数多くあり、これを実現するには、Linux システム管理に関する幅広い知識が必要です。

私のアドバイスは、携帯電話用の SSH クライアントを入手することです。これらは Android と iOS 用に存在し、SSH 経由でコンピュータに接続します。これらの両方のプラットフォーム用の VNC クライアントを入手することもできるので、X11 をだまして実際に表示していないディスプレイでアプリケーションを起動させることなく、GUI で直接操作できます。

于 2012-06-01T02:57:45.400 に答える
2

まず、ログになるユーザーでApacheサーバーを実行する必要があります。次に、以下を実行する必要があります。

<?php
system("export DISPLAY=:0; /usr/bin/firefox;");

ここでテストして作業しました

于 2012-06-01T03:27:24.123 に答える
1

システム トレイで実行され、HTTP (または HTTPS) 要求をリッスンし、代わりに適切なプログラムを開く「ユーザーランド」デーモンの作成を検討します。

于 2012-06-01T02:58:07.320 に答える
1

フルパスを指定する必要があります

exec('/full/path/to/firefox http://google.com');
于 2012-06-01T03:00:12.390 に答える