Lệnh expect trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh expect của Linux để tự động hóa các ứng dụng dòng lệnh tương tác. Lệnh expect là một công cụ tự động hóa mạnh mẽ cho phép các script tương tác với các chương trình yêu cầu người dùng nhập dữ liệu, chẳng hạn như SSH, FTP và các chương trình tương tác khác.

Khi kết thúc lab này, bạn sẽ có thể:

  • Hiểu mục đích và cú pháp cơ bản của lệnh expect
  • Tạo các script để tự động hóa đăng nhập SSH
  • Xử lý các lời nhắc và phản hồi khác nhau trong các script expect của bạn

Lệnh expect có thể giảm đáng kể sự can thiệp thủ công đối với các tác vụ lặp đi lặp lại, giúp cho việc quản trị hệ thống (systemadmin) và các tác vụ thường xuyên trở nên hiệu quả hơn. Bạn sẽ bắt đầu bằng cách cài đặt và khám phá cú pháp cơ bản của expect, sau đó tiến tới việc tạo các script để tự động hóa đăng nhập SSH và xử lý các lời nhắc tương tác khác nhau.

Tìm hiểu Lệnh expect và Cú pháp Cơ bản của Nó

Lệnh expect trong Linux cho phép bạn tự động hóa các chương trình dòng lệnh tương tác mà bình thường yêu cầu người dùng nhập liệu. Điều này đặc biệt hữu ích cho các tác vụ như đăng nhập tự động, truyền tệp hoặc bất kỳ tình huống nào mà một chương trình nhắc nhập liệu.

Cài đặt expect

Trước tiên, hãy xác minh rằng gói expect đã được cài đặt trên hệ thống của chúng ta. Mở terminal của bạn và chạy:

which expect

Nếu expect đã được cài đặt, bạn sẽ thấy đường dẫn của nó (ví dụ: /usr/bin/expect). Nếu không, bạn sẽ cần cài đặt nó:

sudo apt-get update
sudo apt-get install -y expect

Tìm hiểu Cú pháp expect Cơ bản

Lệnh expect sử dụng một ngôn ngữ scripting dựa trên Tcl (Tool Command Language). Cấu trúc cơ bản của một script expect bao gồm các lệnh sau:

  1. spawn: Bắt đầu một tiến trình để tương tác với
  2. expect: Chờ đầu ra cụ thể từ tiến trình đã spawn
  3. send: Gửi đầu vào đến tiến trình đã spawn
  4. set timeout: Đặt thời gian chờ đầu ra mong đợi

Hãy tạo một script expect đơn giản để minh họa các khái niệm này. Mở một trình soạn thảo văn bản và tạo một tệp có tên hello.exp trong thư mục dự án của bạn:

cd ~/project
nano hello.exp

Nhập nội dung sau vào tệp:

#!/usr/bin/expect -f

## Đặt thời gian chờ là 10 giây
set timeout 10

## Spawn tiến trình bash
spawn bash

## Chờ dấu nhắc bash
expect "$ "

## Gửi một lệnh đến tiến trình bash
send "echo Hello from expect\r"

## Chờ dấu nhắc bash lần nữa
expect "$ "

## Thoát khỏi phiên bash
send "exit\r"

## Chờ tiến trình hoàn thành
expect eof

Lưu tệp bằng cách nhấn Ctrl+O, sau đó Enter và thoát nano bằng Ctrl+X.

Biến script thành có thể thực thi:

chmod +x ~/project/hello.exp

Bây giờ chạy script:

~/project/hello.exp

Bạn sẽ thấy đầu ra tương tự như sau:

spawn bash
$ echo Hello from expect
Hello from expect
$ exit
exit

Tìm hiểu Từng Dòng của Script

Hãy để tôi giải thích từng dòng trong script làm gì:

  • #!/usr/bin/expect -f: Đây là dòng shebang cho hệ thống biết sử dụng trình thông dịch expect để chạy script này.
  • set timeout 10: Điều này đặt thời gian chờ là 10 giây cho bất kỳ lệnh expect nào sau đó.
  • spawn bash: Điều này bắt đầu một tiến trình shell bash mới mà expect sẽ tương tác với.
  • expect "$ ": Điều này chờ dấu nhắc bash xuất hiện.
  • send "echo Hello from expect\r": Điều này gửi lệnh đến shell bash. Lưu ý \r ở cuối, mô phỏng việc nhấn Enter.
  • expect "$ ": Điều này chờ dấu nhắc bash một lần nữa, sau khi lệnh đã được thực thi.
  • send "exit\r": Điều này gửi lệnh exit để đóng shell bash.
  • expect eof: Điều này chờ tiến trình đã spawn kết thúc.

Ví dụ đơn giản này thể hiện chức năng cốt lõi của expect. Trong các bước tiếp theo, chúng ta sẽ sử dụng các khái niệm này để tạo các script thực tế hơn.

Tạo một Mock Script Đăng nhập SSH với expect

Trong bước này, chúng ta sẽ tạo một script expect mô phỏng quy trình đăng nhập SSH. Vì chúng ta không thể thực hiện đăng nhập SSH thực tế trong môi trường này, chúng ta sẽ tạo một script mock để minh họa các nguyên tắc.

Tìm hiểu Luồng Xác thực SSH

Khi kết nối với một server từ xa thông qua SSH, tương tác điển hình bao gồm:

  1. Khởi tạo kết nối với ssh username@hostname
  2. Chấp nhận khóa host (nếu kết nối lần đầu tiên)
  3. Nhập mật khẩu của bạn khi được nhắc
  4. Được quyền truy cập vào shell từ xa

Hãy tạo một môi trường SSH mock để minh họa cách expect có thể tự động hóa quy trình này.

Tạo một Mock Script SSH Server

Trước tiên, hãy tạo một script mô phỏng một SSH server nhắc nhập mật khẩu:

cd ~/project
nano mock_ssh_server.sh

Nhập nội dung sau:

#!/bin/bash

echo "The authenticity of host 'mockserver' can't be established."
echo "RSA key fingerprint is SHA256:abcdefghijklmnopqrstuvwxyz123456."
echo "Are you sure you want to continue connecting (yes/no)? "
read answer

if [ "$answer" != "yes" ]; then
  echo "Host key verification failed."
  exit 1
fi

echo "Warning: Permanently added 'mockserver' (RSA) to the list of known hosts."
echo "Password: "
read -s password

if [ "$password" == "mockpassword" ]; then
  echo "Last login: Wed Nov 1 12:00:00 2023 from 192.168.1.100"
  echo "Welcome to Mock SSH Server"
  echo "mockuser@mockserver:~$ "

  while true; do
    read -p "" command
    if [ "$command" == "exit" ]; then
      echo "Connection to mockserver closed."
      exit 0
    else
      echo "Executing: $command"
      echo "mockuser@mockserver:~$ "
    fi
  done
else
  echo "Permission denied, please try again."
  exit 1
fi

Lưu tệp và làm cho nó có thể thực thi:

chmod +x ~/project/mock_ssh_server.sh

Script này mô phỏng:

  • Lời nhắc xác minh host SSH
  • Lời nhắc mật khẩu
  • Một shell đơn giản phản hồi các lệnh

Tạo một script expect để tự động hóa đăng nhập

Bây giờ, hãy tạo một script expect tự động hóa tương tác với SSH server mock của chúng ta:

cd ~/project
nano ssh_login.exp

Nhập nội dung sau:

#!/usr/bin/expect -f

## Đặt biến
set timeout 10
set password "mockpassword"

## Khởi động SSH server mock
spawn ./mock_ssh_server.sh

## Xử lý lời nhắc xác minh host
expect "Are you sure you want to continue connecting (yes/no)? "
send "yes\r"

## Xử lý lời nhắc mật khẩu
expect "Password: "
send "$password\r"

## Chờ dấu nhắc shell
expect "mockuser@mockserver:~$ "

## Thực thi một lệnh
send "ls -la\r"
expect "mockuser@mockserver:~$ "

## Thoát khỏi phiên
send "exit\r"

## Chờ tiến trình hoàn thành
expect eof

puts "\nSSH login automation completed successfully!"

Lưu tệp và làm cho nó có thể thực thi:

chmod +x ~/project/ssh_login.exp

Chạy Script Đăng nhập Tự động

Bây giờ, hãy chạy script expect của chúng ta để tự động hóa tương tác với SSH server mock:

cd ~/project
./ssh_login.exp

Bạn sẽ thấy đầu ra tương tự như sau:

spawn ./mock_ssh_server.sh
The authenticity of host 'mockserver' can't be established.
RSA key fingerprint is SHA256:abcdefghijklmnopqrstuvwxyz123456.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'mockserver' (RSA) to the list of known hosts.
Password:
Last login: Wed Nov 1 12:00:00 2023 from 192.168.1.100
Welcome to Mock SSH Server
mockuser@mockserver:~$ ls -la
Executing: ls -la
mockuser@mockserver:~$ exit
Connection to mockserver closed.

SSH login automation completed successfully!

Giải thích Script

Hãy để tôi giải thích từng phần trong script expect của chúng ta làm gì:

  1. set timeout 10: Đặt thời gian chờ chung là 10 giây cho tất cả các lệnh expect.
  2. set password "mockpassword": Lưu trữ mật khẩu trong một biến.
  3. spawn ./mock_ssh_server.sh: Bắt đầu script SSH server mock của chúng ta.
  4. expect "Are you sure you want to continue connecting (yes/no)? ": Chờ lời nhắc xác minh host.
  5. send "yes\r": Gửi "yes" để chấp nhận khóa host.
  6. expect "Password: ": Chờ lời nhắc mật khẩu.
  7. send "$password\r": Gửi mật khẩu.
  8. expect "mockuser@mockserver:~$ ": Chờ dấu nhắc shell.
  9. send "ls -la\r": Gửi một lệnh để liệt kê các tệp.
  10. expect "mockuser@mockserver:~$ ": Chờ dấu nhắc shell một lần nữa.
  11. send "exit\r": Gửi lệnh exit để đóng phiên.
  12. expect eof: Chờ tiến trình kết thúc.
  13. puts "\nSSH login automation completed successfully!": In một thông báo thành công.

Ví dụ này minh họa cách expect có thể được sử dụng để tự động hóa toàn bộ quy trình đăng nhập SSH, từ chấp nhận khóa host đến thực thi các lệnh trên server từ xa và thoát một cách an toàn.

Xử lý Nhiều Lời Nhắc và Phản hồi với expect

Trong các tình huống thực tế, các chương trình tương tác thường đưa ra nhiều lời nhắc và có thể yêu cầu các phản hồi khác nhau dựa trên các điều kiện khác nhau. Trong bước này, chúng ta sẽ học cách xử lý nhiều lời nhắc và phản hồi có điều kiện trong các script expect.

Tìm hiểu Các Khối expect Có Điều kiện

Lệnh expect có thể được sử dụng với cấu trúc khối pattern-action để xử lý các lời nhắc có thể xảy ra khác nhau:

expect {
    "pattern1" { actions for pattern1 }
    "pattern2" { actions for pattern2 }
    timeout { actions for timeout }
    eof { actions for end of file }
}

Cấu trúc này cho phép script của bạn phản hồi khác nhau tùy thuộc vào đầu ra mà nó nhận được.

Tạo một Script Xử lý Nhiều Lời Nhắc

Hãy tạo một script mô phỏng một chương trình có nhiều lời nhắc:

cd ~/project
nano multi_prompt.sh

Nhập nội dung sau:

#!/bin/bash

echo "Please select an option:"
echo "1. Show date and time"
echo "2. List files"
echo "3. Show system info"
echo "4. Exit"
echo -n "Enter your choice (1-4): "
read choice

case $choice in
  1)
    echo "Current date and time:"
    date
    ;;
  2)
    echo "File listing:"
    ls -la
    ;;
  3)
    echo "System information:"
    uname -a
    ;;
  4)
    echo "Exiting program..."
    exit 0
    ;;
  *)
    echo "Invalid option. Please enter a number between 1 and 4."
    exit 1
    ;;
esac

echo "Do you want to continue? (yes/no): "
read answer

if [ "$answer" == "yes" ]; then
  echo "Continuing..."
  echo "Operation completed successfully."
else
  echo "Exiting program..."
fi

Lưu tệp và làm cho nó có thể thực thi:

chmod +x ~/project/multi_prompt.sh

Bây giờ, hãy tạo một script expect để tương tác với chương trình này và xử lý tất cả các lời nhắc có thể xảy ra:

cd ~/project
nano handle_prompts.exp

Nhập nội dung sau:

#!/usr/bin/expect -f

## Đặt thời gian chờ
set timeout 10

## Bắt đầu chương trình multi-prompt
spawn ./multi_prompt.sh

## Chờ lời nhắc lựa chọn
expect "Enter your choice (1-4): "

## Tạo một lựa chọn ngẫu nhiên (1-3)
set choice [expr {int(rand() * 3) + 1}]
send "$choice\r"

## Xử lý kết quả dựa trên lựa chọn
switch $choice {
    1 {
        expect "Current date and time:"
        expect "Do you want to continue? (yes/no): "
    }
    2 {
        expect "File listing:"
        expect "Do you want to continue? (yes/no): "
    }
    3 {
        expect "System information:"
        expect "Do you want to continue? (yes/no): "
    }
}

## Xử lý lời nhắc tiếp tục
expect {
    "Do you want to continue? (yes/no): " {
        ## 70% cơ hội nói có, 30% cơ hội nói không
        if {rand() < 0.7} {
            send "yes\r"
            expect "Operation completed successfully."
        } else {
            send "no\r"
            expect "Exiting program..."
        }
    }
    timeout {
        puts "Timeout waiting for continue prompt"
        exit 1
    }
}

## Chờ chương trình hoàn thành
expect eof

puts "\nMulti-prompt handling completed successfully!"

Lưu tệp và làm cho nó có thể thực thi:

chmod +x ~/project/handle_prompts.exp

Chạy Script Xử lý Nhiều Lời Nhắc

Bây giờ, hãy chạy script expect của chúng ta để tương tác với chương trình multi-prompt:

cd ~/project
./handle_prompts.exp

Mỗi khi bạn chạy script này, nó sẽ chọn ngẫu nhiên một trong các tùy chọn và quyết định ngẫu nhiên có tiếp tục hay thoát. Dưới đây là một ví dụ về đầu ra:

spawn ./multi_prompt.sh
Please select an option:
1. Show date and time
2. List files
3. Show system info
4. Exit
Enter your choice (1-4): 2
File listing:
total 20
drwxr-xr-x 2 labex labex 4096 Nov  1 10:00 .
drwxr-xr-x 4 labex labex 4096 Nov  1 10:00 ..
-rwxr-xr-x 1 labex labex  345 Nov  1 10:00 handle_prompts.exp
-rwxr-xr-x 1 labex labex  578 Nov  1 10:00 multi_prompt.sh
-rwxr-xr-x 1 labex labex  221 Nov  1 10:00 ssh_login.exp
Do you want to continue? (yes/no): yes
Continuing...
Operation completed successfully.

Multi-prompt handling completed successfully!

Tạo một Script expect Nâng Cao Hơn

Bây giờ chúng ta hãy tạo một script nâng cao hơn có thể xử lý các lời nhắc và lỗi không mong muốn:

cd ~/project
nano advanced_expect.exp

Nhập nội dung sau:

#!/usr/bin/expect -f

## Đặt thời gian chờ
set timeout 10

## Xác định các biến
set program "./multi_prompt.sh"
set max_retries 3
set retry_count 0

## Xác định một thủ tục để xử lý lỗi
proc handle_error {} {
    global retry_count max_retries program
    incr retry_count

    if {$retry_count < $max_retries} {
        puts "\nRetrying... Attempt $retry_count of $max_retries"
        ## Bắt đầu lại chương trình
        spawn $program
        return 1
    } else {
        puts "\nMaximum retry attempts reached. Exiting."
        exit 1
    }
}

## Bắt đầu chương trình
spawn $program

## Vòng lặp tương tác chính
while {$retry_count < $max_retries} {
    expect {
        "Enter your choice (1-4): " {
            send "1\r"  ## Luôn chọn tùy chọn 1 để có hành vi xác định
        }
        "Invalid option" {
            puts "\nReceived invalid option message."
            if {[handle_error]} continue
        }
        "Current date and time:" {
            ## Successfully got date output
        }
        "Do you want to continue? (yes/no): " {
            send "yes\r"
        }
        "Operation completed successfully." {
            puts "\nAdvanced expect script completed successfully!"
            break
        }
        timeout {
            puts "\nTimeout occurred waiting for prompt."
            if {[handle_error]} continue
        }
        eof {
            puts "\nUnexpected end of file."
            if {[handle_error]} continue
        }
    }
}

## Chờ chương trình hoàn thành
expect eof

Lưu tệp và làm cho nó có thể thực thi:

chmod +x ~/project/advanced_expect.exp

Chạy script nâng cao:

cd ~/project
./advanced_expect.exp

Ví dụ đầu ra:

spawn ./multi_prompt.sh
Please select an option:
1. Show date and time
2. List files
3. Show system info
4. Exit
Enter your choice (1-4): 1
Current date and time:
Wed Nov  1 10:00:00 UTC 2023
Do you want to continue? (yes/no): yes
Continuing...
Operation completed successfully.

Advanced expect script completed successfully!

Tìm hiểu Script Nâng Cao

Script nâng cao này thể hiện một số kỹ thuật expect quan trọng:

  1. Xử lý lỗi: Nó sử dụng cơ chế thử lại để xử lý lỗi hoặc các phản hồi không mong muốn.
  2. Thủ tục: Nó xác định một thủ tục tùy chỉnh có tên là handle_error để xử lý lỗi có thể tái sử dụng.
  3. Luồng điều khiển: Nó sử dụng vòng lặp while để duy trì tương tác cho đến khi thành công hoặc số lần thử lại tối đa.
  4. Nhiều pattern expect: Nó xử lý nhiều pattern khác nhau và thực hiện các hành động thích hợp cho từng pattern.
  5. Thứ tự Pattern: Thứ tự của các pattern trong khối expect rất quan trọng - các pattern cụ thể hơn phải đứng trước các pattern chung hơn.

Các kỹ thuật này có thể được áp dụng để tự động hóa các chương trình tương tác phức tạp, nơi luồng có thể thay đổi hoặc có thể xảy ra lỗi.

Tạo Các Script expect Thiết Thực cho Các Tác Vụ Phổ Biến

Trong bước này, chúng ta sẽ tạo các script expect thiết thực cho các tác vụ phổ biến mà các systemadmin thường cần tự động hóa. Chúng ta sẽ tập trung vào các hoạt động tệp, tương tác người dùng và giám sát hệ thống.

Tự động hóa Truyền Tệp với expect

Hãy tạo một script expect tự động hóa việc truyền tệp bằng lệnh scp. Vì chúng ta không thể thực hiện truyền tệp thực tế trong môi trường này, chúng ta sẽ mô phỏng nó:

cd ~/project
nano file_transfer.sh

Nhập nội dung sau để mô phỏng việc truyền tệp giống SCP:

#!/bin/bash

echo "scp file transfer simulation"
echo "Source file: $1"
echo "Destination: $2"
echo "Password: "
read -s password

if [ "$password" == "transfer123" ]; then
  echo "Transferring file..."
  echo "0%"
  sleep 1
  echo "25%"
  sleep 1
  echo "50%"
  sleep 1
  echo "75%"
  sleep 1
  echo "100%"
  echo "File transfer completed successfully."
else
  echo "Authentication failed."
  exit 1
fi

Lưu tệp và làm cho nó có thể thực thi:

chmod +x ~/project/file_transfer.sh

Bây giờ, hãy tạo một script expect để tự động hóa việc truyền tệp này:

cd ~/project
nano file_transfer.exp

Nhập nội dung sau:

#!/usr/bin/expect -f

## Đặt biến
set timeout 10
set source_file "local_file.txt"
set destination "user@remote:/path/to/destination/"
set password "transfer123"

## Tạo một tệp nguồn dummy
spawn bash -c "echo 'This is a test file' > $source_file"
expect eof

## Bắt đầu mô phỏng truyền tệp
spawn ./file_transfer.sh $source_file $destination

## Xử lý lời nhắc mật khẩu
expect "Password: "
send "$password\r"

## Theo dõi tiến trình truyền
expect "0%"
puts "Transfer started..."

expect "25%"
puts "Transfer 1/4 complete..."

expect "50%"
puts "Transfer 1/2 complete..."

expect "75%"
puts "Transfer 3/4 complete..."

expect "100%"
puts "Transfer almost done..."

expect "File transfer completed successfully."
puts "File transfer automation completed!"

## Dọn dẹp tệp dummy
spawn bash -c "rm $source_file"
expect eof

Lưu tệp và làm cho nó có thể thực thi:

chmod +x ~/project/file_transfer.exp

Chạy script tự động hóa truyền tệp:

cd ~/project
./file_transfer.exp

Ví dụ đầu ra:

spawn bash -c echo 'This is a test file' > local_file.txt
spawn ./file_transfer.sh local_file.txt user@remote:/path/to/destination/
scp file transfer simulation
Source file: local_file.txt
Destination: user@remote:/path/to/destination/
Password:
Transferring file...
0%
Transfer started...
25%
Transfer 1/4 complete...
50%
Transfer 1/2 complete...
75%
Transfer 3/4 complete...
100%
Transfer almost done...
File transfer completed successfully.
File transfer automation completed!
spawn bash -c rm local_file.txt

Tự động hóa Tạo Người Dùng với expect

Bây giờ, hãy tạo một script expect tự động hóa việc tạo người dùng. Một lần nữa, chúng ta sẽ mô phỏng quy trình này:

cd ~/project
nano create_user.sh

Nhập nội dung sau:

#!/bin/bash

echo "User creation utility"
echo "Please enter new username: "
read username

echo "Please enter password for $username: "
read -s password

echo "Please confirm password: "
read -s password_confirm

if [ "$password" != "$password_confirm" ]; then
  echo "Error: Passwords do not match."
  exit 1
fi

echo "Creating user $username..."
echo "User $username created successfully."
echo "Do you want to add this user to the sudo group? (yes/no): "
read sudo_choice

if [ "$sudo_choice" == "yes" ]; then
  echo "Adding $username to sudo group..."
  echo "User $username added to sudo group."
fi

echo "User setup completed."

Lưu tệp và làm cho nó có thể thực thi:

chmod +x ~/project/create_user.sh

Bây giờ, hãy tạo một script expect để tự động hóa việc tạo người dùng:

cd ~/project
nano create_user.exp

Nhập nội dung sau:

#!/usr/bin/expect -f

## Đặt biến
set timeout 10
set username "testuser"
set password "P@ssw0rd123"
set add_sudo "yes"

## Bắt đầu tiện ích tạo người dùng
spawn ./create_user.sh

## Xử lý lời nhắc tên người dùng
expect "Please enter new username: "
send "$username\r"

## Xử lý lời nhắc mật khẩu
expect "Please enter password for $username: "
send "$password\r"

## Xử lý lời nhắc xác nhận mật khẩu
expect "Please confirm password: "
send "$password\r"

## Chờ xác nhận tạo người dùng
expect "User $username created successfully."

## Xử lý lời nhắc sudo
expect "Do you want to add this user to the sudo group? (yes/no): "
send "$add_sudo\r"

## Nếu chúng ta chọn thêm vào sudo, hãy chờ xác nhận
if {$add_sudo == "yes"} {
    expect "User $username added to sudo group."
}

## Chờ hoàn thành
expect "User setup completed."

puts "\nUser creation automation completed successfully!"

Lưu tệp và làm cho nó có thể thực thi:

chmod +x ~/project/create_user.exp

Chạy script tự động hóa tạo người dùng:

cd ~/project
./create_user.exp

Ví dụ đầu ra:

spawn ./create_user.sh
User creation utility
Please enter new username:
testuser
Please enter password for testuser:
Please confirm password:
Creating user testuser...
User testuser created successfully.
Do you want to add this user to the sudo group? (yes/no):
yes
Adding testuser to sudo group...
User testuser added to sudo group.
User setup completed.

User creation automation completed successfully!

Tìm hiểu Các Script expect Thiết Thực

Các script thiết thực mà chúng ta đã tạo thể hiện một số khái niệm quan trọng để tự động hóa trong thế giới thực:

  1. Tương tác Tuần tự: Cả hai script đều tuân theo một chuỗi lời nhắc và phản hồi được xác định.
  2. Giám sát Tiến độ: Script truyền tệp theo dõi tiến độ và cung cấp các cập nhật thân thiện với người dùng.
  3. Logic Có Điều kiện: Script tạo người dùng sử dụng logic có điều kiện để xử lý tùy chọn sudo.
  4. Thiết lập và Dọn dẹp Môi trường: Script truyền tệp tạo và dọn dẹp các tệp thử nghiệm.

Các kỹ thuật này có thể được áp dụng để tự động hóa nhiều tác vụ quản trị hệ thống phổ biến, chẳng hạn như:

  • Sao lưu từ xa
  • Cài đặt phần mềm
  • Cấu hình hệ thống
  • Các hoạt động hàng loạt

Bằng cách làm chủ expect, bạn có thể tự động hóa các quy trình tương tác phức tạp mà nếu không sẽ yêu cầu can thiệp thủ công, tiết kiệm thời gian và giảm khả năng xảy ra lỗi do con người.

Tóm tắt

Trong lab này, bạn đã học cách sử dụng lệnh expect trong Linux để tự động hóa các ứng dụng dòng lệnh tương tác. Bạn đã có được kinh nghiệm thực tế với:

  • Cài đặt và tìm hiểu cú pháp cơ bản của lệnh expect
  • Tạo các script để tự động hóa đăng nhập SSH và xử lý các lời nhắc xác thực khác nhau
  • Xử lý nhiều lời nhắc và phản hồi trong các script expect
  • Tạo các script tự động hóa thiết thực cho các tác vụ quản trị hệ thống phổ biến

Lệnh expect là một công cụ mạnh mẽ cho các systemadmin và nhà phát triển cần tự động hóa các quy trình tương tác. Bằng cách sử dụng expect, bạn có thể loại bỏ nhu cầu can thiệp thủ công vào các tác vụ lặp đi lặp lại, tiết kiệm thời gian và giảm nguy cơ xảy ra lỗi do con người.

Một số điểm chính rút ra từ lab này:

  • Lệnh expect sử dụng mô hình pattern-action để tương tác với các chương trình
  • Các script có thể trở nên mạnh mẽ hơn bằng cách xử lý các lời nhắc có thể xảy ra và các điều kiện lỗi khác nhau
  • Các tương tác phức tạp có thể được tự động hóa bằng cách sử dụng logic có điều kiện và các thủ tục tùy chỉnh
  • Tự động hóa thiết thực có thể cải thiện đáng kể hiệu quả cho các tác vụ hệ thống phổ biến

Với các kỹ năng bạn đã học được trong lab này, giờ đây bạn có thể tạo các script tự động hóa của riêng mình cho các ứng dụng dòng lệnh tương tác khác nhau.

400+ câu lệnh phổ biến trong Linux