我有一个.bat
我的 Windows 机器上的文件。这.bat
文件使用plink.exe
连接到 Ubuntu 机器并执行.sh
脚本。但是,根据 Plink 的使用方式,我在脚本上得到了不同的行为:
直接(亲自)登录 Ubuntu --脚本成功
通过 Bitvise 客户端 ssh --脚本成功
通过 Plink ssh(通过调用plink.exe
)并从交互式 shell 调用脚本(它是 Windows 中的 Ubuntu shell)cmd.exe
) -- 脚本成功
ssh via .bat
然后调用 Plink——脚本失败
脚本失败并显示消息:
加载共享库时出错:libCint.so:无法打开共享对象文件:没有这样的文件或目录
其他帖子似乎提到了安装/权限问题libCint.so
但我知道情况并非如此,因为脚本在其他情况下可以正常工作,如上所示。
下面是plink.exe
来自我的线.bat
file:
plink.exe !plink_ssh_details! myscript
当通过这种方式调用时,上面的脚本失败.bat
文件;再次注意,当直接从 Ubuntu 调用或通过 -ssh 直接进入 Ubuntu 时,它会成功cmd.exe
(using plink.exe
) 或 Bitvise 客户端。任何帮助,将不胜感激。
在其他情况下,您正在使用交互式会话。
虽然 Plink 默认使用非交互式会话,但当您在其命令行上指定命令时。
您的脚本可能依赖于一些环境变量(例如PATH
) 被专门设置。
这些变量很可能仅为交互式会话设置。可能是因为它们在仅针对交互式会话执行(来源)的启动脚本中进行了修改。
解决方案是:
更正启动脚本以无条件修改变量(即使对于非交互式会话)。
-
修改脚本不依赖环境变量。
或者您可以获取配置文件脚本,请参阅无法使用 PLINK 从 Windows 中通过 ktutil 命令运行 shell 脚本 https://stackoverflow.com/q/44847506/850848.
-
强制 Plink 使用交互式会话-t
switch
这不是推荐的解决方案,因为使用交互式会话自动执行命令可能会给您带来令人讨厌的副作用。参见示例有没有一种简单的方法可以消除使用 Python 的 Paramiko 库进行 SSH 并从远程计算机的 CLI 获取输出时出现的垃圾值? https://stackoverflow.com/q/33291631/850848
当使用“exec”通道执行命令时,一些更不起眼的 SSH 服务器也可能表现不同。看在 Plink 命令行上执行命令失败并显示“未找到” https://stackoverflow.com/q/48445395/850848.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)