【发布时间】:2021-01-19 23:35:10
【问题描述】:
我正在尝试从 linux 机器远程自动执行 Windows 上的一些脚本。该脚本将读取共享驱动器上的一些文件,然后打印出一些输出。
问题
脚本位于C:\scripts\script.py,它将读取R:(映射自\\remoteFile)
使用ssh user@windows01 "python C:\scripts\script.py" 执行脚本会导致FileNotFoundError: [Errno 2] No such file or directory: 'R:'
脚本在本地工作,当我将路径修改为本地路径并将文件移动到本地路径时也可以工作
预期结果
映射驱动器 R: 或远程路径 \\remoteFile 应该可以在 ssh 会话中访问
解决方法
在我的命令之前映射驱动器,即
ssh user@windows01 "net use R: \\\\remoteFile ${password} /user:user; python C:\scripts\script.py"
该解决方案有效但不是最佳的:我有很多脚本以不同的时间表运行,所以这意味着将这一行添加到所有作业中。
我尝试过的事情
- 修改脚本以直接读取
\\remoteFile,但该路径在 ssh 会话中也不存在 - 我已阅读 github issue 并设置了
EnabledLInkedConnections,但在 ssh 会话中仍未找到该路径 - 我已阅读 this issue,但它不考虑使用公钥的 ssh 会话
- credSSP 可能是一个解决方案,但它需要在服务器/客户端进行更多设置,我不确定是否值得尝试(我听说 credSSP 也存在安全问题)
问题
有什么干净的方法可以读取 ssh 会话中的远程文件吗?脚本执行应完全自动化,因此不考虑任何需要交互式命令/手动输入的解决方案。
【问题讨论】:
标签: windows powershell openssh