Viết kịch bản Terminal Service – Phần 13

Viết kịch bản Terminal Service - Phần 1
Viết kịch bản Terminal Service - Phần 2
Viết kịch bản Terminal Service - Phần 3
Viết kịch bản Terminal Service - Phần 4
Viết kịch bản Terminal Service - Phần 5
Viết kịch bản Terminal Service - Phần 6
Viết kịch bản Terminal Service - Phần 7
Viết kịch bản Terminal Service - Phần 8
Viết kịch bản Terminal Service - Phần 9
Viết kịch bản Terminal Service - Phần 10
Viết kịch bản Terminal Service - Phần 11
Viết kịch bản Terminal Service - Phần 12

Brien M. Posey

Quản trị mạng - Trong phần trước của loạt bài này, chúng tôi đã quay trở lại và hoàn tất kịch bản được bắt đầu trong phần 10. Lúc này, chúng ta đã biết cách lấy đầu vào của người dùng, hãy xem xét lại một chút về kịch bản mà chúng ta đang xây dựng trong phần 11.

Chuyển đổi các máy chủ Terminal

Như những gì bạn thấy trong phần 11, một vấn đề với kịch bản mà chúng ta đang xây dựng là đã thừa nhận hoạt động yêu cầu cần thực hiện đối với bất cứ vấn đề gì mà máy tính hiện được gắn với nó. Điều này có nghĩa rằng nếu bạn thực thi kịch bản từ ổ C: thì nó sẽ chạy kịch bản dựa vào máy trạm nội bộ của bạn. Nếu bạn gọi kịch bản từ một network drive khi đó kịch bản sẽ chạy dựa vào máy chủ mà drive được bản đồ hóa đến. Điều này để lại rất nhiều rủi ro. Để làm cho kịch bản của chúng ta trở lên hữu dụng, chúng ta cần phải biết máy chủ nào đang thực hiện hoạt động với nó và phải có được khả nảng chuyển sang một máy chủ khác nếu cần.

Như những gì thể hiện trong phần những phần trước, chúng ta hoàn toàn có thể bổ sung thêm đoạn mã để xác định một máy chủ mặc định và điều đó mách bảo chúng ta máy chủ nào hiện đang được kết nối. Chúng ta đã tạo một thường trình để cho phép chuyển máy chủ, tuy nhiên lúc này thường trình đó vẫn trống rỗng.

Trước khi có thể viết mã để cho phép chúng ta chọn một máy chủ terminal khác, chúng ta cần phác thảo ra các bước mà kịch bản cần thực hiện. Thứ đầu tiên mà kịch bản cần thực hiện ở đây là truy vấn mạng để có được một danh sách các máy chủ đầu cuối. Như những gì các bạn đã thấy từ phần 2 của loạt bài này, lệnh mang tên QUERY TERMSERVER có thể thực hiện điều đó.

Một thứ mà bạn cần biết về lệnh này là rằng nó chỉ nhận ra các đầu cuối đích thực (true), các máy chủ Windows đã được kích hoạt Remote Desktop sẽ hành đồng như các máy chủ đầu cuối, tuy nhiên chúng không phải là các máy chủ đầu cuối đích thực (true) vì chỉ có thể cấu hình một số hạn chế các session. Nếu gặp phải trường hợp này, bạn sẽ phải nắm lấy cơ hội này để đạt được những nhu cầu của mình. Chúng tôi sẽ giới thiệu một kịch bản để cho phép nó có thể nhận ra các máy chủ đầu cuối đích thực. Nếu cần truy cập các máy chủ cho phép các session của remote desktop thì bạn sẽ bỏ qua lệnh QUERY TERMSERVER.

Khi đã nhận diện danh sách các máy chủ có sẵn, chúng ta cần phải tạo cho quản trị viên cách kết nối đến máy chủ đó. Tuy nhiên trong bài này sẽ không giới thiệu cách kết nối danh sách các máy chủ này trong một menu. Có thể được thực hiện nhưng sẽ mất rất nhiều thời gian. Nếu gặp phải trường hợp đó, chúng tôi khuyêncác quản trị viên nên nhập vào tên của một trong các máy chủ trong danh sách, sau đó sẽ gán tên máy chủ đó cho một biến.

Để tạo ra các thay đổi đó, chúng ta sẽ thay đổi thường trình sub_server. Đây là những gì thường trình đó sẽ được thay đổi:

:sub_server
echo This subroutine allows you to choose a different server
@Echo Off
goto:eof

Như những gì bạn thấy, trường trình không thực hiện bất cứ thứ gì lúc này ngoài việc hiển thị cụm từ “This subroutine allows you to choose a different server” và sau đó kết thúc kịch bản. Thay đổi đầu tiên mà chúng tôi muốn tạo là không muốn kịch bản kết thúc khi quản trị viên chọn một máy chủ nào đó mà thay vào đó quản trị viên sẽ được đưa trở về menu chính để họ có thể thực hiện một số công việc với máy chủ được chọn.

Dòng cuối cùng của thường trình sẽ mách bảo cho kịch bản đi đến phần cuối của file và sau đó kết thúc file. Chúng ta có thể thay đổi điều đó bằng cách thay đổi từ EOF thành LOOP. LOOP là tên của một thường trình được sử dụng cho menu chính của kịch bản. Điều này có nghĩa rằng khi Windows đọc đến dòng cuối cùng trong thường trình thì nó sẽ không kết thúc kịch bản mà thay vào đó là trả về menu của kịch bản.

Việc cho phép quản trị viên thay đổi các máy chủ là hoàn toàn đơn giản. Chúng ta có thể yêu cầu đầu vào của người dùng, sau đó gán đầu vào đó vào biến _SRV, biến này hiện đang giữ tên của máy chủ mặc đinh. Vì máy chủ mặc định hiện đã được gán từ trước khi kịch bản này đến được vòng lặp menu nên việc trả về vòng lặp menu sẽ không cần phải chọn lại máy chủ mới. Trong biểu mẫu hoàn tất của kịch bản, thường trình này sẽ như dưới đây:

:sub_server
@Echo Off
Set /P _SRV=Please enter the name of the server that you want to work with
goto:Loop

Cần lưu ý rằng thường trình cho việc chuyển các máy chủ để lại rất nhiều khả năng. Nó hoàn toàn phụ thuộc vào việc viết đúng chính tả tên máy chủ của quản trị viên và việc nhập vào tên của máy chủ đầu cuối hợp lệ. Việc thực hiện kiểm tra lỗi yêu cầu đến một số kỹ thuật lập trình tiên tiến vượt ra ngoài phạm vi của loạt bài này. Tuy nhiên nếu muốn thực hiện kiểm tra một số lỗi thông qua các cách thực hiện đơn giản, bạn có thể thực hiện bằng lệnh PING trong thường trình. Chúng ta đã gán tên của máy chủ cho biến _SRV, chính vì vậy bạn có thể ping máy chủ theo cách vẫn thực hiện để bảo đảm máy chủ mang tên này tồn tại với lệnh dưới đây:

Ping %_SRV%

Các thông tin về session

Quả thực chúng tôi đã dùng rất nhiều thời gian vào việc phát triển và giúp các bạn hiểu về những cơ sở về framework trong kịch bản. Lúc này chúng ta đã có được một số kiến thức cơ bản cần thiết để có thể dễ dàng bổ sung thêm các chức năng có liên quan đến terminal service vào kịch bản. Như những gì bạn có thể thấy qua các phần trước, kịch bản của chúng ta hiện có một số mục menu trống đã được kết nối đến một số thường trình cũng trống rỗng. Chúng ta có thể thay đổi các mục menu này sau đó thay đổi các thường trình tương ứng với nó.

Hầu hết những lựa chọn menu đầu liên quan đến một thường trình vẫn còn trống mang tên “sub_nothing” (xem thể hiện bên dưới). Chúng ta có thể copy và đặt lại tên của thường trình này, cùng với đó là sử dụng nó như một cơ sở cho các thường trình mà chúng ta sẽ tạo.

:sub_nothing
echo Reserved for future code
goto:eof

Do lệnh đầu tiên mà chúng ta muốn tạo liên quan đến các thông tin session nên chúng ta hãy tạo một copy của thường trình và gọi nó là sub_session. Tiếp đến chúng ta sẽ xóa đi lệnh “echo” và thay thế nó bằng lệnh QUERY SESSION. Bạn có thể thấy kịch bản được thay đổi trong thường trình này ở bên dưới:

:sub_session
Query Session /server:%_svr% /Counter
goto:Loop

Lưu ý rằng, chúng tôi đã thay đổi lệnh cuối cùng trong thường trình thành “goto :loop” để kịch bản sẽ không kết thúc khi lệnh trước nó được thực thi.

Lệnh Query Session sẽ dụng hai chuyển đổi. Chuyển đổi đầu tiên là /server, chuyển đổi này được sử dụng để hướng lệnh này đến với máy chủ quản trị viên đã chỉ định. Còn chuyển đổi kia là /Counter. Nó là một chuyển đổi mang tính tùy chọn dùng để cung cấp cho chúng ta một bản đối chiếu nằm bên dưới danh sách session.

Kết luận

Trong bài này chúng tôi đã bắt đầu giới thiệu cho các bạn một số lệnh cụ thể cho kịch bản mà chúng ta đang phát triển. Trong phần tiếp theo của loạt bài này, chúng ta sẽ tạo thêm các thường trình có liên quan đến dịch vụ đầu cuối.

Thứ Hai, 01/12/2008 17:02
51 👨 763
0 Bình luận
Sắp xếp theo
    ❖ Tổng hợp