Linux
 Computer >> コンピューター >  >> トラブルシューティング >> Linux

修正:stdinは端末ではないため、疑似端末は割り当てられません

ほとんどの場合、スクリプトから何らかのSSHコマンドを実行している場合にのみ、紛らわしい「stdinは端末ではないため、疑似端末は割り当てられません」というエラーが表示されます。コマンドラインから同じコマンドを実行している場合は、完全に正常に機能する可能性があります。

先に進む前に、SSHエージェントに公開鍵が追加されていることを確認してから、sshの使用を再試行してください。キーが見つからなかった可能性があります。一方、これが機能しない場合は、スクリプトで少しトラブルシューティングを行う必要があります。

方法1:疑似tty割り当ての強制と無効化

問題をすばやく解決できるコマンドラインオプションのペアがあります。疑似端末の割り当てを強制するために、ssh -t -t -Rに続いて、接続しようとしていた残りの部分を試してください。たとえば、ssh -p 80 appuals@ssh.example.comを使用してexample.comのアカウントにログインするとします。これは、もちろん、存在しないドキュメントのダミーです。

実行してみてください。 ssh -t -t -R -p 80 appuals@ssh.example.comで、これで問題が解決するかどうかを確認してください。もちろん、システムに正常にログインするには、名前を実際のアカウントとホスト名に置き換える必要があります。これにより端末の割り当てが強制されるため、stdinは端末エラーではないため、疑似端末が割り当てられないことはわかりません。

一方、エラーメッセージの文字列が一定になる場合があります。一部のユーザーは、これは面白いと見なされる可能性があると述べています。

とはいえ、確かにイライラするので、Ctrl+Cを使用してプロセスを強制終了します。

修正:stdinは端末ではないため、疑似端末は割り当てられません

-tスイッチを1つだけ使用するか、数を増やしてみてください。これが機能しない場合は、コマンドで-tスイッチを-Tスイッチに置き換えます。例: ssh -T -R -p 80 appuals@ssh.example.comで、それが機能するかどうかを確認します。

このメソッドは、疑似端末割り当てプロセス全体を完全に無効にするため、強制的に機能しない場合に機能する可能性があります。もちろん、これはコマンドラインからの問題ではありませんが、スクリプトからどのオプションが機能するかを見つけたら、そのサーバーにアクセスするために実行する必要のある将来のスクリプトで使用できるように、必ずメモしてください。

sshコマンドはこれらの2つの反対のオプションに同様の名前を付けたので、-tは疑似端末の割り当てを強制し、-Tはそれを無効にすることに注意してください。これらのオプションでは大文字と小文字が区別され、sshが機能するには従来のTTY端末が必要なため、スクリプト内から必要になることがよくあります。当然、あなたの場合、この目的のためにターミナルエミュレータを使用することになります。

方法2:sshpassを使用する

一部の人々は、デフォルトで含まれていないsshpassコマンドを使用するとスクリプトがより適切に機能することに気付くかもしれません。試してみたい場合、または特定のユースケースで必要な場合は、いつでもsudo apt-getinstallsshpassまたはsudoyuminstallsshpassを使用してインストールできます。

まだ使用していない場合は、おそらく必要ありません。それでも、同じ手法を使用して、この種の環境でも疑似端末の割り当てに関連するエラーメッセージを驚かせることができます。

たとえば、sshpass -p password ssh -T appuals@ssh.example.comを使用して、システムをスクリプト内から強制的に動作させます。

方法3:ジョブ管理エラーの修正

これをすべて修正した後でも、別のエラーメッセージが表示される場合があります。 ttyへのアクセスがないという警告を受け取った後、シェルにジョブ制御がないことを通知された場合は、ある程度正常に動作できるはずです。

このエラーは、csh、tcsh、または場合によってはAlmquistやその他のシェルに関連するリモートサーバーで何かが不規則であることが原因で発生します。他のエラーメッセージが表示されていたために気づかなかったかもしれませんが、疑似端末について他に何も表示されない場合は、通常どおりに比較的続行できるはずです。

ただし、この場合、Ctrl + Zを使用してプロセスを停止することはお勧めしません。これは、プロセスを再度起動する方法がない場合があるためです。終了時に停止したジョブがあるというエラーメッセージが表示された場合は、ログアウトできません。

修正:stdinは端末ではないため、疑似端末は割り当てられません

psコマンドとkillコマンドを使用して、プロセスで作業を失ってもかまわないことを前提として、シャットダウンできないジョブをすべて閉じます。今すぐ終了できます。


  1. SDカードがPCに認識されない問題を修正

    SD カードが PC に認識されない問題を修正: SD カードが PC に認識されない場合、問題はドライバーに関連している可能性があります。ほとんどの場合、問題は古い、破損した、または互換性のないドライバー、ハードウェアの問題、デバイスの問題などが原因で発生します。すでに説明したように、内蔵 SD カード リーダーまたは USB SD カード リーダーの両方で SD カードが検出されない場合があります。これはソフトウェアの問題であるため、これを確認する唯一の方法は、別の PC で SD カードにアクセスすることです。 SD カードが他の PC で動作しているかどうかを確認し、動作している場合、

  2. 時間データが利用できなかったため、コンピュータが再同期しなかった問題を修正

    システム時刻を定期的に正しく更新するには、外部のネットワーク タイム プロトコル (NTP) サーバーと同期することをお勧めします .ただし、利用可能な時間データがなかったため、コンピューターが再同期されなかったというエラーが表示される場合があります。このエラーは、時刻を他のタイム ソースに同期しようとしているときによく発生します。したがって、利用可能な時間データがなかったため、コンピュータが再同期されませんでしたを修正するために読み続けてください Windows PC でエラーが発生しました。 Windows 10 で時間データが利用できなかったため、コンピュータが再同期されなかったエラ