SSHPassを介してリモートデバイスに複数のコマンドを渡す方法

SSHPassを介してリモートデバイスに複数のコマンドを渡す方法

一部のデバイスでリモートtcpdumpを実行し、分析用にファイルを自分のローカルコンピュータに保存する方法を設定しようとしています(リモートデバイスにファイルを保存してから取り出したくありません)。デバイスの空き容量が小さい)

SSHPassがインストールされているマイコンピュータ(ブリッジネットワーク)にUbuntu VMを設定し、それを使用してこのトラブルシューティングを正常に完了しました。 Ubuntuコンピュータの端末で以下の構文を使用しました。

sshpass -p <password> ssh -c aes256-ctr <username>@<remote-ip> -p <remote-access-port> "tcpdump -i eth1 -s 0 -nnn -vvv -w - port 53" \ > /home/drew/Desktop/DNS_Capture.pcap

上記のコマンドを実行した後、私のセッションが接続され、リモートデバイスでtcpdumpを実行してDNSトラフィックの表示を開始しました。これは正確に私が望むUbunut VMデスクトップ上のファイルに直接キャプチャされます。

ただし、他のデバイスでは、SSHセッションのデフォルトのログインページはデバイスのLinuxシェルではなく、他のデバッグシェルです。実際にCLIを介して他のデバイスでプロセスを実行するには、次の手順を実行します。

ssh <username>@<remote-ip> -p <remote-access-port>
<password> (*at prompt for password after connection)
sh
tcpdump -i eth5.1 -s 0 -nnn -vvv port 53

上記のように、「sh」を起動し、デバイスに適したLinuxシェルに入れました。上記のように必要に応じてキャプチャを実行できますが、問題はその出力を.pcapファイルに保存できないことです。この問題を解決しようとして、他のデバイスで動作するように次のことを試みました。

sshpass -p <password> ssh <username>@<remote-ip> -p <remote-access-port> "sh; tcpdump -i eth5.1 -s 0 -nnn -vvv -w - port 53" \ > /home/drew/Desktop/DNS_Capture.pcap

このフォーラムの他の質問では、人々がコマンドエスケープ文字(「;」など)を使用して複数のコマンドを正常に渡したことを発見しました。このように設定すると、最初のコマンドも適用されないようです。正しいLinuxシェルにログインしていることを確認するために、次のようにテストとして入力しても、2番目のコマンドは実行されず、プロンプトでまだデフォルトのログインページにあることを示すメッセージが表示されます。

sshpass -p <password> ssh <username>@<remote-ip> - <remote-access-port> "sh; ifconfig"

答え1

ユーザー @Jesse_b は、「関連性」とマークされた投稿で正確です。

sshpassの複数のコマンド

私は以前その記事を何度も見ましたが、ここで文書の構文が不都合であることがわかりました。 heredocを使用してコマンドを1shつ。tcpdump .....sshpass

これに答えて「関連:...」を表示する方法が見つからなかったので申し訳ありません。可能であれば、これらの投稿を混乱させないように教育を受けたいと思います。

関連情報