【问题标题】:Run bash script upon ssh在 ssh 上运行 bash 脚本
【发布时间】:2013-10-01 06:25:37
【问题描述】:

我有一个主机,我在上面创建了一个脚本。

只要用户通过 ssh 登录,就会执行脚本 bashrc 会启动脚本。

现在我试图让脚本执行,即使用户实际上并没有登录,只是运行一个命令。 例如,如果用户正在运行以下命令,我希望执行脚本:

ssh user@host.com some_command

有没有办法实现上述目标?

【问题讨论】:

  • 那么上述方法有什么问题?如果您已正确配置所有内容(权限),则可以运行“ssh user@host '/path/to/script.sh'”之类的命令。
  • 我猜他希望在用户通过ssh 运行脚本时在远程主机上执行脚本,而不仅仅是在用户登录时。

标签: linux bash scripting ssh


【解决方案1】:

您可以编辑 authorized_keys 文件并添加 COMMAND ,例如: command="/home/michale/bin/dothis.sh" ...公钥... 有关更多详细信息,请阅读 ssh 和 authorized_keys 文档。

【讨论】:

    【解决方案2】:

    影响所有用户的解决方案可能是使用pam-exec 并在用户登录事件上启动脚本。查看pam-exec manual page 以及如何使用它的示例pam-exec scripting

    单个用户的简单解决方案应该是在ssh用户的rc文件中添加脚本,将您的脚本添加到:

    ~/.ssh/rc
    

    我已经完成了一些测试,rc 解决方案在您的情况下运行良好,它在用户通过ssh 启动远程命令时执行。

    如果您没有rc 文件,请创建它。

    【讨论】:

    • 感谢您的回复!但是如果我在 ~/ssh 目录下没有 rc 文件怎么办?顺便说一句,这是一个运行 cygwin 的 win 主机
    • 不客气,如果您觉得我的回答有帮助,请点赞和/或接受。如果您没有 rc 文件,只需在 ~/.ssh/ 中创建它。
    • 创建的时候,里面应该写什么? '!/bin/bash ./script_name' ?还是别的什么?
    • 您有两种可能性:完整的脚本或对您的脚本的调用。
    • 不错!如果您觉得我的回答有帮助,请点赞并采纳。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-04-04
    • 2011-01-23
    • 2016-11-09
    • 2019-01-26
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多