rsync退出消息“stdin不是tty”
我想使用rsync到我的SSH访问的远程服务器。 我使用以下命令:
rsync -e'ssh -p 22222'-rtz --delete content_dir / user@example.com:/ home / user / public_html
输入命令后,它会要求输入远程位置的密码。 当我输入它时,它会随着消息退出,
stdin:不是一个tty
我如何向rsync提供密码? 建议的方法应该也可以在shell脚本中使用它。
您需要添加:
[-z“$ PS1”] &&返回
到位于您的家庭目录中的.bashrc的beginig。
密码在这里被接受,正如你所说的那样,操作确实发生了。
错误消息“stdin:不是tty”是由于服务器上的启动脚本中的某些内容试图处理仅应用于交互式登录(当您使用ssh直接连接到服务器等时)才会发生的操作。
[ -z "$PS1" ] && return
解决了这个问题,但它检查提示字符串长度是否等于零,如果它退出。 虽然$ PS1不会设置在非交互式shell中,但$ PS1长度不为零并不意味着shell不是交互式的。
更好的方法是使用$-
来检查shell的当前选项。 例如[[ $- != *i* ]] && return
。