1部屋の複数のWindowsコンピュータの画面をどのように制御しますか?

1部屋の複数のWindowsコンピュータの画面をどのように制御しますか?

私は部屋の周りに異なる時間に異なるメッセージを表示する読み取り専用画面を設定したいと思います。ラップトップはBASHスクリプトを実行して時間を確認し、どのメッセージをどのモニタに送信するかを決定します。これはプレーンテキスト(おそらくコンソールですがフォントが大きい場合)、画像、またはどちらでも機能します。非常に基本的なスクリプトは次のとおりです。

#!/bin/bash
echo "Good morning!" > /dev/screen1
echo "Please stack the blocks as high as you can!" > /dev/screen2

私の職場には使われていないLenovo Yogaがたくさんあり、キーボードを折りたたんで画面だけをつけたまま部屋に7~8個を装着できます。職場では、これらのデバイスからWindows 10を削除することはできません。

  • 文や絵は大丈夫です。
  • YogasにはHDMIポートがあります。
  • 部屋の人は画面と対話せずに情報だけを表示します。

問題は、Linuxを実行しているラップトップのBASHスクリプトからテキスト(またはオプションで画像)を取得し、部屋全体に散在しているWindows画面にこれらのさまざまなメッセージや画像を表示するにはどうすればよいですか?

ベストアンサー1

多くの静的HTMLページを持つLinuxシステムに簡単なhttpサーバーを設定します。 Bashからこのページに直接メッセージを書いてください。 Windowsコンピュータのブラウザでこのページを開きます。新しいデータが入ると、一部のJavaScript魔法を使用してコンテンツを自動的に再ロードできます。

例:

Linuxマシンの場合:

静的httpサーバーを設定し、以下から提供するようにしてください/var/www/room/

mkdir /var/www/room/
cd /var/www/room/
python3 -m http.server

ページの作成/var/www/room/index.html:

<head>
<meta charset="UTF-8">
</head>
<body>
<div id="data">
  <!-- here will be an autoreloaded data -->
</div>
<script>
const AUTORELOAD_TIMEOUT = 1000;  // milliseconds

setInterval(async () => {
  /*
    Load data from an address after the hash-sign (#) and put it into div#data

    E.g. if the browser location is:

       http://somesite/some/path#some/file/name

    then the function will load data from the page:

       http://somesite/some/file/name

  */
  const hash = document.location.hash
  if (hash.length <= 1) {
    return
  }
  const file = hash.slice(1)
  const response = await fetch(file)
  if (response.status === 200) {
    document.getElementById("data").innerHTML = await response.text()
  }
}, AUTORELOAD_TIMEOUT)
</script>
</body>

Windowsマシンの場合:

  • ブラウザを開くhttp://your-linux-machine-ip:your-linux-machine-port/index.html#screen1

Linuxマシンの場合:

  • ファイルへの書き込みscreen1:
echo "Hello, world!" > /var/www/room/screen1

Windowsシステムを確認してください。

  • ページにテキストを表示する必要があります。Hello, world!

おすすめ記事