我正在编写一个 java 程序来帮助自动化几个任务。在其中一项任务中,我需要将 bash 脚本推送到远程 linux 系统(java 程序将在 windows 机器上运行),然后运行该脚本。有没有人知道如何去做这件事?
我研究了 Jsch,但文档很糟糕,我在实现我想做的事情时遇到了难以置信的困难。还有其他想法或特定用例吗?
编辑:我刚刚想到使用 java 来运行可能会执行此操作的批处理。令人费解的是,但也许是可能的。现在调查这个。
我确实为 JSch 创建了一个 Javadoc,它应该可以帮助您做到这一点。对于复制,您应该使用 ChannelSftp,然后使用 ChannelExec 来执行脚本。
或者,如果您真的不需要将脚本放在服务器上,则取决于脚本语言,您可以将整个脚本作为 ChannelExec 的“命令”提供(其命令在用户的默认 shell 中执行,并且我认为没有固有的尺寸限制)。
如果您使用 Perl 或类似的解释器,您可以将脚本作为标准输入(即通道的输入流)传递给解释器命令,这应该允许“实时”执行它。