[解決済み】stdinがターミナルでないため、疑似ターミナルが割り当てられない
2022-01-30 02:33:20
質問
私は、リモートサーバー上にいくつかのディレクトリを作成し、その後、私のローカルマシンからリモート上にファイルをコピーするためにscpを使用するシェルスクリプトを作成しようとしています。以下は、私がこれまでに作成したものです。
ssh -t user@server<<EOT
DEP_ROOT='/home/matthewr/releases'
datestamp=$(date +%Y%m%d%H%M%S)
REL_DIR=$DEP_ROOT"/"$datestamp
if [ ! -d "$DEP_ROOT" ]; then
echo "creating the root directory"
mkdir $DEP_ROOT
fi
mkdir $REL_DIR
exit
EOT
scp ./dir1 user@server:$REL_DIR
scp ./dir2 user@server:$REL_DIR
実行すると必ずこのメッセージが表示されます。
Pseudo-terminal will not be allocated because stdin is not a terminal.
そして、スクリプトは永遠にハングアップするだけです。
私の公開鍵はサーバー上で信頼されており、スクリプトの外ですべてのコマンドを問題なく実行できます。何かアイデアはありますか?
解決方法は?
試す
ssh -t -t
(または
ssh -tt
を使うことで、stdin がターミナルでない場合でも擬似的に tty を確保することができます。
こちらもご覧ください。 bashスクリプトで実行されたSSHセッションを終了させる
sshのmanpageより。
-T Disable pseudo-tty allocation.
-t Force pseudo-tty allocation. This can be used to execute arbitrary
screen-based programs on a remote machine, which can be very useful,
e.g. when implementing menu services. Multiple -t options force tty
allocation, even if ssh has no local tty.
関連
-
[解決済み】環境変数TERMが設定されていない件
-
[解決済み] DiffコマンドとGrepで "バイナリファイル(標準入力)が一致 "と表示される。
-
[解決済み] Ubuntuにchkconfigをインストールするにはどうしたらいいですか?
-
[解決済み] insmod エラー: './hello.ko' を挿入: -1 無効なモジュール形式".
-
[解決済み] シェルで 'exec ls' を実行すると何が起こるか、またその理由は?[クローズド]。
-
[解決済み] scpでファイルをコピーする:接続がタイムアウトした[closed]。
-
[解決済み] モスキートクライアントの取得が接続を拒否
-
[解決済み] lsコマンドの出力をフィルタリングして、2月に作成されたファイルのみを表示させるにはどうすればよいですか?
-
[解決済み] SIGRTMAXとSIGRTMINの使い方は?
-
[解決済み] CMakeエラーです。このプロジェクトでは次の変数が使用されていますが、NOTFOUND に設定されています。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] "デバイスに不適切なioctl"
-
[解決済み] bash: cd: そのようなファイルやディレクトリはありません
-
[解決済み] GNUアセンブラを使ってx86_64でprintfを呼び出す
-
[解決済み] at&tアセンブリの「push」と「pushq」の違いは何ですか?
-
[解決済み] エラーです。"gzip: stdout: Linuxカーネルアップグレード中に「No space left on device」(デバイスに空き容量がない)が発生する(空き容量がある間)[closed]。
-
[解決済み] scpでファイルをコピーする:接続がタイムアウトした[closed]。
-
[解決済み] モスキートクライアントの取得が接続を拒否
-
[解決済み] CLIから、ファイルの最終行を表示する
-
[解決済み] SIGRTMAXとSIGRTMINの使い方は?
-
[解決済み] Bashでsshして複数のコマンドを実行する最もクリーンな方法は何ですか?