stdin:ttyにはありません

stdin:ttyにはありません

SSHでは、次のコマンドを使用してserver1からserver2にバックアップしようとしています。

[user1@server1 ~]$ mysqldump -u dbuser -p"dbpwd" --opt  dbname        \
                      | gzip -c                                       \
                      | ssh  -o StrictHostKeyChecking=no              \
                             -o UserKnownHostsFile=/...../known_hosts \
                             -l deploy                                \
                             -i  /...../id_rsa                        \
                             -v  user2@server2                        \
                             "/bin/cat > /.../test.sql.gz" \
                      2>&1 

以下のようにエラーが発生します。

debug1: Sending command: /bin/cat > -t user2@server2:/..../test.sql.gz
stdin: is not a tty
/bin/cat: user20@server2:/..../test.sql.gz
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
: No such file or directory
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
Transferred: sent 265040, received 2552 bytes, in 0.0 seconds
Bytes per second: sent 6736670.0, received 64865.6
debug1: Exit status 1
mysqldump: Got errno 32 on write

誰でもこの問題を解決できますか?

修正する

バックアップコマンドから「user2@server2」と「deploy -i」を削除して実行しました。それは私に次のようなメッセージを与える

debug1: Sending env LANG = en_US.UTF-8
debug1: Sending command: /bin/cat > -t /....../test.sql.gz
stdin: is not a tty
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
/bin/cat: /......./test.sql.gz: No such file or directory
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
Transferred: sent 248608, received 2536 bytes, in 0.1 seconds
Bytes per second: sent 4628197.5, received 47211.3
debug1: Exit status 1
mysqldump: Got errno 32 on write

ベストアンサー1

user2リモートユーザーserver2のログインシェルが(オン)である場合は、bash呼び出し時に対話型でない場合(たとえば、提供された内容を解釈する場合など)、慎重に読んでbash解釈してください(リモートシステムでそれに対応するものかもしれません)。~/.bashrc/etc/bash.bashrcssh/bin/cat > user2@server2:/......./test.sql.gz

のコンテンツが、または(from)などの操作を~/.bashrc実行していないことを確認してください。sttymesgmesgsysvinit-utils: | mesg n多くのLinuxディストリビューションが示すように)を実行するか、stdinが端末であり、シェルが対話型[ -t 0 ]case $- in (*i*) ...;; esac)であることを確認した後にのみ表示されるのとまったく同じメッセージを出力します。

リモートユーザーのログインシェルがあるかどうかcshを呼び出すかどうかにかかわらず、非対話型シェルを含む各シェルの説明と説明をtcsh見てください(ただし、通常は無条件に何もしません)。.cshrc.tcshrczsh~/.zshenvsshtty

これはコマンドを失敗させず、間違ったメッセージだけを表示します。

コマンドが失敗する理由は次のとおりです。

 /bin/cat > user2@server2:/......./test.sql.gz

user2@server2:自分のホームディレクトリに呼び出されるディレクトリがない場合は意味がありません。user2server2

これがおそらくエラーの原因です。

 : No such file or directory

苦情を示す「ファイルまたはディレクトリ」が「空」のように見えることは、コマンドラインのどこかにキャリッジリターンが隠されていることを意味します。

必要なものは/bin/cat > /path/to/output/file/on/server2/test.sql.gz/path/to/output/file/on/server2ディレクトリが事前に存在する必要があります。

現在、私たちはで実行されているコマンドのメッセージを見ているので、-vを削除したいかもしれません。おそらく、そのコマンドラインを解釈するときにリモートシェルから送信されたメッセージなので、何を確認するのは難しいでしょう。~/.bashrcssh~/.bashrccat ...catmysqldump

おすすめ記事