【问题标题】:Linux script - password step cuts the flowLinux 脚本 - 密码步骤切断流程
【发布时间】:2012-06-18 14:36:29
【问题描述】:

让我们假设我想将 ssh 写入 1.2.3.4 的脚本,然后调用 ls。 问题是当调用“ssh 1.2.3.4”行时,密码是 需要,因此,即使我填写密码,流程也会停止, 脚本不会继续。 输入密码后如何让脚本继续执行?

谢谢!

【问题讨论】:

    标签: linux login ssh command


    【解决方案1】:

    您想要进行公钥认证。这里有一些资源可以帮助您前进。

    http://magicmonster.com/kb/net/ssh/auto_login.html

    http://www.cs.rpi.edu/research/groups/vision/doc/auto/ssh/ssh_public_key_authentication.html

    我会发布更多链接,但我没有足够的声望点。 ;) 如果您需要更多帮助,只需在“SSH 自动登录”或“SSH 公钥身份验证”上搜索即可。

    【讨论】:

    • 他可以不用它,但建议使用它。
    【解决方案2】:

    实际上,您正在尝试在本地运行 ls,但您打开了一个 ssh 会话。所以在会话打开之前它不会运行 ls 。如果你想远程运行 ls,你应该使用

    ssh username@host COMMAND

    command 是您要运行的命令。调用该命令后,SSH 会话将立即结束,您可以正常捕获其输出。

    我建议您对需要 ssh 的脚本使用 RSA 身份验证方法。

    我刚试过这个脚本:

    #!/bin/sh
    ssh vps1 ls
    mkdir temp
    cd temp
    echo test > file.txt
    

    而且它有效。我可以连接到我的服务器并列出我的家。然后,它在本地创建临时目录,将 cd 放入其中,然后在其中创建带有“测试”的 file.txt。

    【讨论】:

    • 调用此行后,当它完成时,脚本不会继续。 (我想继续在我这边做事)
    • 添加和示例。我用 RSA auth 和 password auth 都试过了,效果很好。能不能说的具体点?
    【解决方案3】:

    编写名为 login_to 的简单登录 bash 脚本并赋予 exec 权限(chmod 744 login_to)

    #!/bin/bash
    
    if [ $1 = 'srv1' ]; then
      echo 'srv1-pass' | pbcopy
      ssh root@11.11.11.11
    fi
    
    if [ $1 = 'foo' ]; then
      echo 'barbaz' | pbcopy
      ssh -t dux@22.22.22.22 'cd ~/somedir/someotherdir; bash'
    fi
    

    现在像这样使用它

    login_to srv1

    login_to foo

    当要求输入密码时,只需点击(ctrl+v 或 command+v)即可登录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多