expect はどこでも見られます
expect コマンドを初めて見たのは、私が初めてイベントに参加したときでした。当時、それは自動デプロイメント、MD5 比較、およびリリースのための本格的なオンライン ツールのセットで、社内の有能な人材がシェル スクリプトを使用して作成しました。スクリプトと多くの期待されるコマンド。私はexpectコマンドの使い方がまったく理解できなかったので、時間を見つけてexpectコマンドについてこの記事にまとめました。
推奨: [Linux ビデオ チュートリアル ]
まずは質問をしてください
現在、2 つの Linux ホスト A と B があります。 、ホスト A からホスト B に SSH 接続し、ホスト B でコマンドを実行する方法は? このプロセスを完全に自動化するにはどうすればよいですか?この方法を使用することもできます:
ssh admin@10.220.20.15 "ls"
ただし、この方法は扱いにくく、毎回パスワードを入力する必要があり、複雑なロジックやコマンドを実行することはできません。では、完全自動化を実現するにはどうすればよいでしょうか?これには、今日の記事で要約した期待が使用されます。
期待とは何ですか?
expect は、人間の介入なしにインタラクティブなタスクを自動化するために使用される無料のプログラミング ツールです。端的に言うと、expect は自動対話機能を実装するために使用されるソフトウェアのセットです。
実際の作業では、コマンド、スクリプト、またはプログラムを実行するとき、これらのコマンド、スクリプト、またはプログラムは実行を継続するために端末から特定の指示を入力する必要があり、これらの入力は手動で行う必要があります。 Expect を使用すると、プログラムのプロンプトに従ってプログラムに提供される標準入力をシミュレートできるため、自動化された対話型実行が実現します。これは期待通りです! ! !
##expect の基本##expect を使用する場合は、基本的に次の 4 つのコマンドを処理します。
#sendコマンドは文字列パラメータを受け取り、そのパラメータをプロセスに送信します。
実践的なコード分析
上記は予想を要約し、特によく使用されるいくつかのコマンドについて詳しく説明します。以下は、一般的に使用されるいくつかの Expect スクリプトを通じて、expect を使用して日常のタスクを完了する方法の詳細な説明です。
#!/usr/tcl/bin/expect set timeout 30 set host "101.200.241.109" set username "root" set password "123456" spawn ssh $username@$host expect "*password*" {send "$password\r"} interactこれは、expect の基本的な使用法を示す、非常に単純な Expect サンプル コードです。 #!/usr/tcl/bin/expect: スクリプトを解釈するために Expect を使用します; set timeout 30: タイムアウトを秒単位で設定します (デフォルトは 10 秒です);set host "101.200.241.109": 変数を設定; spawn ssh $username@$host: spawn は、expect 環境に入った後に実行できるexpect の内部コマンドです。expect がインストールされていない場合、または直接 デフォルトの SHELL で実行すると、spawn コマンドが見つかりません。その主な機能は、対話型の指示を提供するために ssh 実行プロセスにシェルを追加することです; expect "*password*": Expect ここでも、expect の内部コマンドです。このコマンドは、最後に実行されたかどうかを判断することを意味します。出力結果に文字列 "password" が含まれている場合は、すぐに返されます。そうでない場合は、一定の時間が経過してから返されます。ここでの待ち時間は、以前に設定した 30 秒です。send " $password\r": 対応する出力結果が一致すると、オープン ssh プロセスにパスワードが送信され、対話型アクションが実行されます。 interact: 実行完了後、対話型状態が維持され、制御はコンソールに引き継がれ、この時点で手動で操作することができます。このような文がない場合は、リモート端末に留まらず、ログイン完了後に終了します。 これは、上記の単純なスクリプトの分析です。上記の例では、expect - mode-action に非常に重要な概念が含まれています。つまり、上記の Expect "*password*" {send " $password \r"}このコードが表す意味。
モード アクション
コード Expect "*password*" {send "$password\r"} と組み合わせて、「モード アクション」について説明します。簡単に言うと、パターンが一致すると対応するアクションが実行され、パスワード文字列が一致するとパスワードが入力されます。次のようなコードも表示される場合があります:
expect { "password" { send "$password\r" exp_continue } eof { send "eof" } }
其中exp_continue表示循环式匹配,通常匹配之后都会退出语句,但如果有exp_continue则可以不断循环匹配,输入多条命令,简化写法。
传参
很多时候,我们需要传递参数到脚本中,现在通过下面这段代码来看看如何在expect中使用参数:
#!/usr/tcl/bin/expect if {$argc < 3} { puts "Usage:cmd <host> <username> <password>" exit 1 } set timeout -1 set host [lindex $argv 0] set username [lindex $argv 1] set password [lindex $argv 2] spawn ssh $username@$host expect "*password*" {send "$password\r"} interact
在expect中,\$argc表示参数个数,而参数值存放在$argv中,比如取第一个参数就是[lindex $argv 0],以此类推。
总结
能够在工作中熟练的使用Shell脚本就可以很大程度的提高工作效率,如果再搭配上expect,那么很多工作都可以自动化进行,对工作的展开如虎添翼。如果你会Python的话,你的视野将会更加开阔,那个时候你又会“嫌弃”expect了。
以上がLinux 期待の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Linuxでは、ファイルおよびディレクトリ管理ではLS、CD、MKDIR、RM、CP、MVコマンドを使用し、許可管理はCHMOD、CHOWN、およびCHGRPコマンドを使用します。 1。LS-Lなどのファイルおよびディレクトリ管理コマンドは、詳細情報、MKDIR-Pを再帰的に作成するディレクトリを再帰的に作成します。 2。CHMOD755FILEセットファイル許可、CHOWNUSERFILEファイル所有者、CHGRPGROUPFILEの変更ファイルグループなどの許可管理コマンド。これらのコマンドは、ファイルシステム構造とユーザーおよびグループシステムに基づいており、システムコールとメタデータを介して動作および制御します。

メンテナンスメモデンリンリンアスピアルブーテンビロンメント、criticalsystemmaincencetasks.itallowsadministratorstopertopertopertopersetstingtingpasswords、Repainingfilesystems、およびRecoveringfrombootfailurureSinaMinimalenvironment.

Linuxのコアコンポーネントには、カーネル、ファイルシステム、シェル、ユーザー、カーネルスペース、デバイスドライバー、パフォーマンスの最適化とベストプラクティスが含まれます。 1)カーネルは、ハードウェア、メモリ、プロセスを管理するシステムのコアです。 2)ファイルシステムはデータを整理し、Ext4、BTRFS、XFSなどの複数のタイプをサポートします。 3)シェルは、ユーザーがシステムと対話するためのコマンドセンターであり、スクリプトをサポートします。 4)システムの安定性を確保するために、ユーザースペースをカーネルスペースから分離します。 5)デバイスドライバーは、ハードウェアをオペレーティングシステムに接続します。 6)パフォーマンスの最適化には、システム構成とベストプラクティスのチューニングが含まれます。

Linuxシステムの5つの基本コンポーネントは次のとおりです。1。Kernel、2。Systemライブラリ、3。Systemユーティリティ、4。グラフィカルユーザーインターフェイス、5。アプリケーション。カーネルはハードウェアリソースを管理し、システムライブラリは事前コンパイルされた機能を提供し、システムユーティリティはシステム管理に使用され、GUIは視覚的な相互作用を提供し、アプリケーションはこれらのコンポーネントを使用して機能を実装します。

Linuxメンテナンスモードは、Grubメニューから入力できます。特定の手順は次のとおりです。1)GRUBメニューのカーネルを選択し、「E」を押して編集し、2)「Linux」行の最後に「シングル」または「1」を追加し、3)Ctrl Xを押して開始します。メンテナンスモードは、システム修理、パスワードリセット、システムのアップグレードなどのタスクに安全な環境を提供します。

Linux Recoveryモードを入力する手順は次のとおりです。1。システムを再起動し、特定のキーを押してGrubメニューを入力します。 2。[RecoveryMode)でオプションを選択します。 3. FSCKやrootなどの回復モードメニューで操作を選択します。リカバリモードを使用すると、シングルユーザーモードでシステムを開始し、ファイルシステムのチェックと修理を実行し、構成ファイルを編集し、システムの問題を解決するのに役立ちます。

Linuxのコアコンポーネントには、カーネル、ファイルシステム、シェル、および共通ツールが含まれます。 1.カーネルはハードウェアリソースを管理し、基本的なサービスを提供します。 2。ファイルシステムはデータを整理して保存します。 3.シェルは、ユーザーがシステムと対話するインターフェイスです。 4.一般的なツールは、毎日のタスクを完了するのに役立ちます。

Linuxの基本構造には、カーネル、ファイルシステム、およびシェルが含まれます。 1)カーネル管理ハードウェアリソースとUname-Rを使用してバージョンを表示します。 2)ext4ファイルシステムは、大きなファイルとログをサポートし、mkfs.ext4を使用して作成されます。 3)シェルは、BASHなどのコマンドラインインタラクションを提供し、LS-Lを使用してファイルをリストします。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Dreamweaver Mac版
ビジュアル Web 開発ツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
