首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过SSH向fbi发送命令?

如何通过SSH向fbi发送命令?
EN

Unix & Linux用户
提问于 2018-01-13 10:43:30
回答 3查看 12.2K关注 0票数 3

我正在使用fbi来显示一些图像。fbi有一些键盘控件,如+-Page UpPage Down等来控制图像。

我不想使用键盘,而是通过SSH将这些控制命令发送到fbi

我已经尝试过以下方法:

代码语言:javascript
复制
mkfifo /tmp/mycmd
fbi /myfolder/*.jpg < /tmp/mycmd &

这样做之后,fbi就不会启动了。我尝试发送一些命令,比如echo . > /tmp/mycmd,但是它没有启动;并给出了以下错误:

代码语言:javascript
复制
using "DejaVu Sans Mono-16", pixelsize=16.67 file=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
ioctl VT_GETSTATE: Inappropriate ioctl for device (not a linux console?)

有什么问题吗?

如何通过SSH向fbi发送命令!?

EN

回答 3

Unix & Linux用户

发布于 2018-05-17 01:11:31

要显示图像,fbi需要访问TTY。因此,您需要使用-T 1

fbi -d /dev/fb0 -T 1 zxcv.png

如果获得access /dev/tty1: Permission denied,则可以使用sudo运行该命令。

不幸的是,我不知道向它发送命令的任何方法。我尝试使用第二回波将东西发送给/dev/tty1,但它导致了fbi崩溃。您的fifo方法似乎也不起作用。

票数 7
EN

Unix & Linux用户

发布于 2018-01-13 15:11:58

尝试将-d /dev/fb0选项与fbi一起使用。

默认情况下,fbi通过查看它要在哪个虚拟控制台设备上使用来找到它应该使用的框架缓冲区设备。显然,它考虑的标准输入为此目的。当您从FIFO重定向它的标准输入时,它会得到一个非控制台设备,并且不能继续。指定要显式使用的框架缓冲区设备可能会有所帮助。

您甚至可能会发现,只要您拥有使用框架缓冲设备所需的权限,甚至不需要FIFO:只要通过SSH连接启动fbi -d /dev/fb0 /myfolder/*.jpg就可以了,如果它适合您的目的。

票数 0
EN

Unix & Linux用户

发布于 2022-10-09 15:36:01

这件事我也有麻烦。我换到了虚拟终端1,它起了作用:

代码语言:javascript
复制
# Change to virtual terminal 1
chvt 1

# Make a dummy image with ImageMagick if you need one
magick -size 640x480 xc:red image.jpg

# Display on framebuffer
fbi -d /dev/fb0 -T 1 image.jpg

如果遇到问题,您可以检查/dev/fb0是否真的是您的帧缓冲区,并且您有以下的写权限:

代码语言:javascript
复制
cat /dev/random > /dev/fb0

如果您的屏幕被随机颜色的像素覆盖,您可以推断出/dev/fb0确实是您的帧缓冲区。

如果您收到“拒绝权限”错误,请重试:

代码语言:javascript
复制
sudo cat /dev/random > /dev/fb0

如果这样做有效,可以使用以下内容更改/dev/fb0上的权限:

代码语言:javascript
复制
sudo chmod 666 /dev/fb0

或者,您可以启动一个提升的bash shell,更改权限并一次显示所有内容:

代码语言:javascript
复制
sudo bash -c "chvt 1; fbi -T 1 -d /dev/fb0 image.jpg"

否则你什么也得不到,在这种情况下,你需要问一个比我聪明的人

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/416785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档