[解決済み] bashスクリプトによるtelnetセッションの自動化
2023-05-25 21:12:58
質問
私は、いくつかの
telnet
に関連するタスクを、Bash スクリプトを使用して自動化することに取り組んでいます。
いったん自動化されると、ユーザーは
telnet
(との対話はなくなります(つまり、完全に自動化されます)。
スクリプトは以下のようなものです。
# execute some commands on the local system
# access a remote system with an IP address: 10.1.1.1 (for example)
telnet 10.1.1.1
# execute some commands on the remote system
# log all the activity (in a file) on the Local system
# exit telnet
# continue on with executing the rest of the script.
ここで2つの問題に直面しています。
-
スクリプトからリモート システム上でコマンドを実行する方法 (人間の介入なし)。
私のいくつかのテストコードでの経験から、私は
telnet 10.1.1.1
が実行されると、telnet は対話型セッションに入り、スクリプト内の後続のコード行はローカル システムで実行されることがわかりました。ローカル システムではなくリモート システムでコード行を実行するにはどうしたらよいでしょうか。 -
のアクティビティのログファイルを取得することができません。
telnet
セッションのアクティビティのログ ファイルをローカル システムで取得できません。私が使用した stdout リダイレクトは、リモート システム上にコピーを作成します (ログをローカル システムにコピーするためにコピー操作を実行したくありません)。どのように私はこの機能を達成することができますか?
どのように解決するのですか?
を書く。
expect
スクリプトを書きます。
以下はその例です。
#!/usr/bin/expect
#If it all goes pear shaped the script will timeout after 20 seconds.
set timeout 20
#First argument is assigned to the variable name
set name [lindex $argv 0]
#Second argument is assigned to the variable user
set user [lindex $argv 1]
#Third argument is assigned to the variable password
set password [lindex $argv 2]
#This spawns the telnet program and connects it to the variable name
spawn telnet $name
#The script expects login
expect "login:"
#The script sends the user variable
send "$user "
#The script expects Password
expect "Password:"
#The script sends the password variable
send "$password "
#This hands control of the keyboard over to you (Nice expect feature!)
interact
実行するには
./myscript.expect name user password
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
deepin20のサブネットマスクはどこですか?deepinのサブネットマスクを表示するためのヒント
-
Linux NICがRTNETLINK answersというエラーで起動できない場合、どうすればよいですか?ファイルが存在するか?
-
Linux Mintシステムでプログラムをアンインストールするには? Linux で不要なアプリケーションをアンインストールするためのヒント
-
Linux Mintのシステムバージョン情報はどこにありますか? Linux Mint のシステム情報を見るためのヒント
-
deepin20のソフトをアンインストールする方法を教えてください。deepinのアプリケーションをアンインストールする2つの方法
-
linux(ubuntu 18.04)でのアイデア運用データベース障害問題について
-
deepin20のデスクトップアイコンのスタイルを変更する方法は?deepinのアイコンテーマを変更するためのヒント
-
[解決済み] Linuxでファイルをシンボリックリンクするには?[クローズド]
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] 特定のファイル/フォルダを除外してディレクトリをtarするシェルコマンド