【问题标题】:How do I get the password from the su command?如何从 su 命令获取密码?
【发布时间】:2014-07-25 07:19:23
【问题描述】:

我正在将文件从远程服务器复制到本地服务器。这是执行此操作的代码:

ssh -q username@$192.168.162.156 "su -lc 'cp /copy/from /copy/it/here'"

我在 for 循环中使用此代码段,因此每次迭代都会提示输入密码。如何从su 命令获取密码? (不使用 rsync 或 sudo)。我也不想要任何替代品,即使它们更好。

【问题讨论】:

  • 您真的需要su 命令吗?您不能只复制以下文件吗:ssh <user>@<host> cat /<path_to_file>/<filename> > <local_filename>
  • 我希望expect 能够解决这个问题。已经有很多关于这个的话题了。尝试搜索ssh expect

标签: linux bash shell scripting suse


【解决方案1】:

在本地服务器中执行:

scp remote_user@remote_server:/path/to/files /dir/to/copy

在本地机器上执行时,以用户remote_user登录到remote_server,并将/path/to/files/中的文件复制到远程服务器到本地服务器中的 /dir/to/copy/

您可能需要设置passwordless ssh 连接以在不需要密码的脚本中运行它。

阅读man scp了解更多信息。

【讨论】:

    【解决方案2】:

    您可以通过标准输入传递密码:

    echo 'password' | su -c [...]
    

    【讨论】:

    • 幸好这行不通,因为它不安全。
    • su 获取密码也是不安全的(但幸运的是无法做到)。
    【解决方案3】:

    如果重复提示密码是您的问题,您可以尝试

    1. 在主机之间创建无密码 ssh 设置
    2. 使用perl的new ssh module
    3. 将所有文件打包,然后通过网络发送。这样只会发送一个 tar 文件,密码提示只会出现一次。

    【讨论】:

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