LinuxコマンドでIPを生成すると、SSHを介してサーバーにログインした後にそのコマンドを実行することはできません。

LinuxコマンドでIPを生成すると、SSHを介してサーバーにログインした後にそのコマンドを実行することはできません。

直接sshを使用すると、サーバーが正しく実行され、ログアウトする前に必要な数のコマンドを実行できます。ssh [email protected]

サーバーのIPアドレスは、私のネットワーク設定で定義されているものと非常に似ていますが、最後のオクテットが変わりました。次のコマンドは、ifconfig正しいIPアドレスを読み取り、生成します。

ifconfig Netcon | grep "inet " | printf `awk '{ print $2 }'` | tail -c 1 | ssh -tt [email protected].`tr 12 21`

SSH はサーバーのパスワードとログインの入力を求めるプロンプトで、新しいホスト名を表示します。しかし、私が入力したものは何も実行されません。

Last login: Fri Feb 28 09:07:38 2020 from 192.168.13.2
[email protected]:~$ ping google.com


cd
asdasdwjawdi

-ttSSH呼び出しからそれを削除すると、次のようにログインが失敗します。

tput: No value for $TERM and no -T specified

ベストアンサー1

あなたは混乱しています。標準入力ssh最終オクテットを生成するために必要なコマンドと処理。デフォルトでは、あなたのコマンドは次のようになります。

echo 1.2.3.4 | ssh -tt user@`tr 12 21`

trこれにより、コマンド(パイプ)の入力が受信されているので、echo端末に接続されていないことがわかります。また、sshパイプから入力を読み取ろうとします。

私の考えであなたが望むのはこれです。

ip=$(ifconfig eth0 | awk '/inet / { split($2, ip, /\./); printf "%d.%d.%d.2\n", ip[1], ip[2], ip[3] }')
ssh "user@$ip"

または一時変数のない行で

ssh "user@$(ifconfig eth0 | awk '/inet / { split($2, ip, /\./); printf "%d.%d.%d.2\n", ip[1], ip[2], ip[3] }')"

おすすめ記事