![从远程 Windows 机器在 Ubuntu 上执行 Bash 脚本?](https://linux22.com/image/534476/%E4%BB%8E%E8%BF%9C%E7%A8%8B%20Windows%20%E6%9C%BA%E5%99%A8%E5%9C%A8%20Ubuntu%20%E4%B8%8A%E6%89%A7%E8%A1%8C%20Bash%20%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我在 ubuntu 10.4 机器上有一个 bash 脚本。它是共享的,我可以从我的 win7 机器访问它\\LINUX-SERVER\bash_repo\make-live
但是当我这样做时,Windows 会尝试打开它。这不是我想要的。我想告诉 ubuntu执行它。
我实际上希望能够在 Windows 上构建一个 GUI 应用程序,用户单击一个按钮,它会告诉 ubuntu 机器上的 bash 脚本执行。
这一切可能吗?
答案1
您是否尝试过 PuTTY 制造商提供的 plink? http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
您应该能够在 ubuntu 机器上运行该脚本,如下所示:
plink.exe -ssh -pw pass -noagent user@linux-server /path/to/your/script/make-live
答案2
正如其他人所建议的,您可以使用 ssh 来获取 CLI 会话或将其包装在可访问的程序中,但是您可以将其作为网络共享进行访问意味着 Samba 已配置并正在运行 - 并且有多种方法可以让 Samba 执行文件(例如魔术脚本、winpopups、svcctl)翻譯更多细节。
答案3
正如我上面的评论所建议的,如果您的 ubuntu 机器上运行着一个 Web 服务器,您就可以从 PHP 执行脚本。
像下面这样的小 PHP 脚本就足够了:
<?php
$output = shell_exec('bash /path/to/your/script');
echo "$output";
?>
将 PHP 代码保存在诸如的文件中/var/www/exec.php
,然后将您的浏览器从任何机器指向该 URL http://your_ubuntu_machine_ip/exec.php
。
请注意,该脚本将以用户(默认的 apache web 服务器用户)身份执行www-data
。如果您想使用 sudo 运行特权命令,则需要使用 将www-data
用户添加到sudoers
文件visudo
。
您需要一个类似这样的条目:
www-data ALL=NOPASSWD: /path/to/command