【发布时间】:2011-09-10 06:07:24
【问题描述】:
这是问题的上下文:
为了让我能够在工作中打印文档,我必须将文件复制到另一台计算机,然后从该计算机打印。 (不要问。这很复杂,没有其他可行的解决方案。)两台计算机都是 Linux,我在 bash 中工作。我目前执行此操作的方式是将文件scp 传递到打印计算机,然后将ssh 输入并从命令行打印。
这是我想做的:
为了让我的生活更轻松,我想将这两个步骤合二为一。我可以轻松编写一个完成这两个步骤的函数,但我必须提供两次密码。有什么方法可以组合这些步骤,以便我只提供一次密码?
在有人建议之前,基于密钥的 ssh 登录不是一种选择。出于安全原因,它已被管理员特别禁用。
解决方案:
我最终对 Wrikken 提供的第二个解决方案进行了修改。简单地将他的第一个建议包含在一个函数中就可以完成工作,但我喜欢能够打印多个文档而无需为每个文档输入一次密码的想法。我有一个相当长的密码,而且我是一个懒惰的打字员:)
所以,我所做的是获取一系列命令并将它们包装在 python 脚本中。我使用 python 是因为我想参数化脚本,而且我发现在 python 中最容易做到。我作弊,只是通过 os.system 从 python 运行 bash 命令。 Python 只是处理参数化和流控制。逻辑如下:
if socket does not exist:
run bash command to create socket with timeout
copy file using the created socket
ssh command to print using socket
除了使用超时之外,我还在我的 python 脚本中添加了一个选项来手动关闭套接字,如果我希望这样做的话。
如果有人想要代码,请告诉我,我会将其粘贴到 bin 或放在我的 git 存储库中。
【问题讨论】:
-
Ack,完全忘记了。事实上,基本上,
ssh-agent与我的第二个答案基本相同,而且麻烦更少。 -
@Daenyth 据我所知,ssh-agent 不起作用。据我了解,ssh-agent 使用公钥身份验证,已在服务器端(打印机)禁用。
-
如果您的管理员“出于安全原因”关闭密钥登录,他们就是无能的。密钥比基于密码的登录安全得多。
-
@Daenyth 你正在向合唱团布道。然而,我认为他们的理由是,他们不能相信用户会保护他们的密钥安全。他们别无选择,只能允许密码,他们宁愿只担心一个入口点而不是两个入口点。我在大学环境中,这意味着我们的工作站只比公开访问的要好一点。