サーバーポートのコンテンツへの公開アクセスを許可します。

サーバーポートのコンテンツへの公開アクセスを許可します。

リモートLinuxサーバー(私の大学で設定)のポート127.0.0.1:5006に自動的に更新されるリアルタイムPythonプロット(Bokehを使用)が表示されます。通常、ローカルコンピュータでプロットを表示するには、サーバーにSSHで接続し、そのアドレスのポート転送を有効にする必要があります。私の質問は、誰かが私のサーバーのIPアドレス(例:123.12.12.123)とそれを見つけるポートを知らせたときにSSHの問題なしにプロットを表示できるようにするにはどうすればよいですか?これは可能ですか?

修正する: 詳細を実装するために必要なコードです。プロットデータを読み取るには2つのファイルが必要なので、それを含めます。ここ

''' 
Use the ``bokeh serve`` command to run the example by executing: bokeh serve sliders.py
at your command prompt. Then navigate to the URL-http://localhost:5006/sliders
in your browser.
'''

from bokeh.io import curdoc
from bokeh.layouts import column, row
from bokeh.models import Button, ColumnDataSource
from bokeh.plotting import figure

# Callbacks
def update_data():
   print("reading new data")
   df1 = read_pickle('weeklydata2.pkl')
   source.data = ColumnDataSource.from_df(df1)

# Set up data
df =read_pickle('weeklydata1.pkl')
f = dict(OAT='green', SAT='orange', OAH='red')
source = ColumnDataSource(df)

# Set up plot
p = figure(x_axis_type="datetime")

for i in df.columns:
   p.line('index',
          i,
          source=source,
          legend_label=i,
          line_color=f[i])
   p.circle('index',
            i,
            source=source,
            size=10,
            color=f[i])

# Set up widgets
button = Button(label='Refresh Plot')
button.on_click(update_data)
inputs = column(button)

curdoc().add_root(row(inputs, p, width=800))
curdoc().title = "Time Series of Temp., Setpoint and Humidity Variables"

これにより出力が生成されます。

2019-11-26 10:53:19,916 Bokeh Server バージョン 1.4.0 を起動 (Tornado 6.0.3 で実行)

2019-11-26 10:53:19,918 ユーザー認証 Hook 未提供(デフォルトで有効)

2019-11-26 10:53:19,921 Bokehアプリケーションは以下で実行されます。http://localhost:5006/datashow

2019-11-26 10:53:19,921 Bokehサーバーの起動、プロセスID:7116

2019-11-26 10:53:23,385 WebSocket接続が開かれました。

2019-11-26 10:53:23,385 サーバー接続が作成されました

新しいデータを読む

新しいデータを読む

2019-11-26 10:54:41,574 WebSocket接続終了:コード=1001、理由=なし

中断する、閉じる

上記のポートでサーバーを実行して、誰でもライブプロットのみを表示し、必要に応じて更新するオプションを持つことを望みます。ここでは、ハードコーディングされた静的データソースを提供する場合にのみ更新が機能します。しかし、何を言っているのか分かりますか?

ベストアンサー1

この情報を使用して目的を達成する唯一の方法は、ユーザーと他のすべてのMACアドレスを必須ポートにリダイレクトするiptablesルールを使用することです。たとえば、次のようになります。

iptables -t nat -A PREROUTING -p tcp --dport 22 -m mac ! --mac-source 11:22:33:44:55:66 -j DNAT --to 123.12.12.123:5006

おすすめ記事