나는 방 주위에 다른 시간에 다른 메시지를 표시하는 읽기 전용 화면을 설정하고 싶습니다. 랩톱은 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!