从 Windows 机器在 Linux Mint 上执行脚本

从 Windows 机器在 Linux Mint 上执行脚本

基本上我正在尝试使用 Linux Mint 来显示 Powerpoint 演示文稿。

演示文稿将在 Windows 计算机上更新,然后用户将执行一个脚本,在演示终端上“刷新”演示文稿。我们现在已经有了这个功能,但使用的是 Windows XP,由于支持结束,我们现在必须删除它。

我在 Mint 中遇到的问题是我不知道如何从 Windows 计算机执行脚本,该脚本将终止当前的演示文稿进程,传输演示文稿的最新副本,然后执行。

我尝试使用 plink 通过 SSH 连接编写脚本,但它没有显示演示文稿,因为它在“SSH”会话而不是控制台中运行。

非常感谢任何想法,我已经碰到了心理障碍!

谢谢

答案1

我在这里做一些有根据的猜测:

  • 在 Linux 机器上,某些图形会话正在运行,很可能是 xserver。
  • 使用 ssh 连接您无法访问该 xserver。

您可以尝试以下操作:

  1. 您将新演示文稿复制到 Linux 计算机。
  2. 假设您的演示程序被调用foo(请告诉我们它是如何调用的),您可以使用killall foo或杀死它pkill foo。如果您使用正确的用户(或 root,您不应该使用),这将起作用。
  3. 您需要DISPLAY在 ssh 脚本中设置变量才能启动图形应用程序。以下很可能会起作用(如果不起作用,请参阅在远程 X 显示器上打开窗口(为什么“无法打开显示器”)?)。

    export DISPLAY=":0"
    
  4. 现在您应该能够foo重新开始并且它应该显示在屏幕上。

您可能想为此创建一个脚本(使可执行文件chmod u+x restart-foo.sh

#!/usr/bin/env bash
# name this script
#    restart-foo.sh
pkill foo
export DISPLAY=":0"
nohup foo path/to/presentation.xxx &

您可以使用 ssh 执行此操作(我猜这取决于您的 Windows ssh 客户端)

my-command-to-copy-the-presentation
ssh user-name@linux-machine ./restart-foo.sh

答案2

如果您的设置允许您将演示文稿保存/导出到pdf,您可以从 libreoffice 切换到 evince 以在 Linux 计算机上显示演示文稿。 Evince 是一个pdf查看器,如果显示的文件发生更改,它将自动更新视图。

在您的设置中,您所要做的就是弄清楚如何将更新的演示文稿复制到 Linux 计算机。最好,您可以对其进行设置,以便将其pdf保存在 Samba 共享中。然后,pdf当 Windows 计算机的用户保存它时,显示的内容就会立即更新。

答案3

在 Fabian 的帮助下,我成功地使用以下脚本完成了这项工作:

    #!/usr/bin/env bash
mount -t cifs //10.50.18.114/Presentation -o 'username=Administrator,password=***,sec=ntlm' /mnt/share
pkill soffice.bin
cp -v /mnt/share/Pres.ppt /home/kyle/Documents
chmod 777 /home/kyle/Documents/Pres.ppt
export DISPLAY=":0"
nohup libreoffice --norestore --nolockcheck --show /home/kyle/Documents/Pres.ppt &
sessionid="$(pidof -s sshd)"
kill $sessionid
exit

我使用 plink 执行一个“SSH 脚本”,该脚本会自动以 root 身份运行上述脚本,最后的终止会话只是终止 plink ssh 会话,因为它只是挂在最后并且无法正确关闭。

相关内容