【问题标题】:rsync exits with the message "stdin is not a tty"rsync 退出并显示消息“stdin is not a tty”
【发布时间】:2011-08-15 07:21:52
【问题描述】:

我想将 rsync 用于我拥有 SSH 访问权限的远程服务器。我使用以下命令:

rsync -e 'ssh -p 22222' -rtz --delete content_dir/user@example.com:/home/user/public_html

输入命令后,它会询问远程位置的密码。当我输入它时,它会随着消息退出,

stdin: 不是 tty

如何为 rsync 提供密码?当我在 shell 脚本中使用时,建议的方法也应该有效。

【问题讨论】:

  • 显然它做了它应该做的事情。文件传输成功。但是错误信息是什么,我应该担心吗?

标签: ssh rsync tty


【解决方案1】:

你需要添加:

[ -z "$PS1" ] && 返回

到位于您的主目录中的 .bashrc 的开头。

【讨论】:

  • 你能解释一下这实际上是做什么的吗? [ -z "$PS1" ] 有什么作用?
  • @rooby,该命令检查 shell 是否以交互方式运行。如果是这样,它会立即退出。这是有道理的,因为非交互式进程不需要 bash 配置文件中的内容,例如 rsync。
【解决方案2】:

密码在这里被接受,正如你所说的那样,操作确实发生了。

错误消息“stdin: is not a tty”是由于您服务器上的启动脚本中的某些内容试图处理仅应在交互式登录时发生的操作(当您使用 ssh 直接连接到服务器等时) .

【讨论】:

    【解决方案3】:

    [ -z "$PS1" ] && return 解决了这个问题,但它检查提示字符串长度是否等于零,如果是则退出。虽然 $PS1 不会在非交互式 shell 中设置,但 $PS1 的长度为零并不最终意味着 shell 不是交互式的。

    更好的方法是使用 $- 检查 shell 的当前选项。例如[[ $- != *i* ]] && return

    【讨论】:

      【解决方案4】:

      如果一个简单的return 不能完成这项工作,这里是从this blog article 采取的另一种方法:

      if `tty -s`; then
       mesg n
      fi
      
      • tty -s 检查是否连接了 TTY(-s 告诉它静默执行此操作并使用适当的返回码退出)。 tty 返回附加的 tty(例如“/dev/pts/1”)。这应该比检查一些 shell 变量更安全;)
      • mesg 控制对您的终端的写入权限(msg n 不允许写入(在我们的例子中不存在的)终端),因此需要一个存在。

      在某些系统上(在我的情况下是 Debian Jessie,但也有关于 Ubuntu 的报告)mesg n1 无条件设置为 ~/.bashrc 或 @987654331 @。所以如果它以这种方式存在,这可能是罪魁祸首。

      与其他示例一样,您当然可以将其设为单行:[[ $(tty -s ) ]] && mesg n。没有人阻止你将两者结合起来:

      if [[ $(tty -s ) ]]; then
        mesg n
      else
        return
      fi
      

      顺便说一句:根据链接的文章,这个片段应该去你连接的机器的.bashrc(“远程”)——所以如果那是johndoe@somehost,这应该是应用于/home/johndoe/.bashrc 的开头somehost。就我而言,我只是在“呼叫主机”上应用了此更改后才删除了该消息。

      PS:如果有独立的msg n 命令,还要检查.profile(在我的情况下是这样)。如果是,请将其包装在那里。


      1: mesg n 用于防止机器上的其他用户写入您当前的终端设备,这本身是一件好事 - 但对某些 rsync 没有帮助工作;)

      【讨论】:

        猜你喜欢
        • 2015-09-16
        • 2012-09-10
        • 1970-01-01
        • 2017-10-19
        • 2023-02-24
        • 2022-10-21
        • 2020-11-17
        • 1970-01-01
        • 2019-04-18
        相关资源
        最近更新 更多