为什么 heredoc 不适用于 sftp 密码?
Why heredoc does not work for sftp password?
我想使用 heredoc 输入密码到 sftp:
sftp root@example.com <<EOF
password
EOF
但是不行。 sftp 仍然要求我输入密码。我知道我可以使用 sshpass 输入密码,但为什么我不能只使用 heredoc 输入密码。我认为 heredoc 将被读取为 sftp 的标准输入。我是不是误会了什么?
sftp
会在图形环境下 运行ning 时从 /dev/tty
或其他程序中读取密码。当您从终端 运行 sftp
时,stdin 是 /dev/tty
。 heredoc 替换标准输入,但 sftp
将始终读取 /dev/tty
作为密码。
我建议使用sshpass
:
SSHPASS='password' sshpass -e sftp root@example.com
来自man sshpass
:
-e
: The password is taken from the environment variable "SSHPASS".
我想使用 heredoc 输入密码到 sftp:
sftp root@example.com <<EOF
password
EOF
但是不行。 sftp 仍然要求我输入密码。我知道我可以使用 sshpass 输入密码,但为什么我不能只使用 heredoc 输入密码。我认为 heredoc 将被读取为 sftp 的标准输入。我是不是误会了什么?
sftp
会在图形环境下 运行ning 时从 /dev/tty
或其他程序中读取密码。当您从终端 运行 sftp
时,stdin 是 /dev/tty
。 heredoc 替换标准输入,但 sftp
将始终读取 /dev/tty
作为密码。
我建议使用sshpass
:
SSHPASS='password' sshpass -e sftp root@example.com
来自man sshpass
:
-e
: The password is taken from the environment variable "SSHPASS".