2012-07-27 29 views
24

Việc sử dụng echo-e "\ 029" cũng không hoạt động. Nhưng nếu sử dụng strg + alt gr + ] trực tiếp trong phiên đầu cuối -> nó hoạt động.Không thể đóng phiên scpi (telnet) với echo "^]" khi tôi sử dụng nó trong tập lệnh

Tôi phải đặt câu hỏi cụ thể hơn:
Tôi kết nối bộ tạo tín hiệu RF (AGILENT) qua Telnet/SCPI.
Nếu tôi làm hướng dẫn này trên thiết bị đầu cuối và nhấn ở phần cuối của phiên giao dịch CTRL + ALT GR + ] cho '^]' sau đó đóng phiên SCPI đúng và tôi có thể gõ quit để đóng phiên telnet đúng.
Không có thông báo lỗi trên màn hình của trình tạo RF. Nên nó phải là.

Nếu tôi thực hiện điều này qua tập lệnh, phiên SCPI dường như không nhận ra điều kiện tín hiệu ngắt '^]' và sẽ bị buộc phải đóng sau khi kết thúc tập lệnh (telnet và scpi). -> Tin nhắn: "Bị ngắt kết nối bởi máy chủ nước ngoài". Rất tiếc, tôi nhận được thông báo lỗi trên màn hình của trình tạo RF -> "tiêu đề không hợp lệ", v.v.

Sau khi kết nối thành công xuất hiện: Đã kết nối với 192.168.10.66 Escape Character is '^]' -> Đây là điểm vấn đề. Nhập thủ công trong thiết bị đầu cuối hoạt động chính xác, tập lệnh không hoạt động.

Kịch bản của tôi trông giống như sau:

function getIDNMessage() 
{ 
    (  
     echo open $1 $2 
     sleep 1 
     echo "*IDN?" 
     sleep 1 
     echo –e "\029"   # or echo “^]” does not work well 
     sleep 1 
     echo "quit\r" 
     sleep 1 
    ) | telnet > scpi_telnet.log 2>&1 
} 

getIDNMessage 192.168.10.66 7777  
+1

Tại sao không chỉ 'thoát'? –

+1

Tôi không thấy câu hỏi ở đây. –

+1

Nó xuất hiện scpi có một lệnh đóng (* prefix_close *), nhưng nó sẽ không làm tôi ngạc nhiên nếu chỉ đóng kết nối sẽ có tác dụng tương tự (chỉ cần rơi ra khỏi cuối kịch bản sẽ làm). Khi khởi động, telnet có thể kiểm tra nếu stdin là một tty (cần thiết cho IAC DO/DONT echo, ví dụ) telnets bình thường vô hiệu hóa "active" IAC session build-up khi được sử dụng trên một cổng không chuẩn. – wildplasser

Trả lời

0

Nó phải là như vậy. Bởi vì ^] in trong thiết bị đầu cuối trên máy chủ có nghĩa là cho phía khách hàng không có gì. Khách hàng phải nắm bắt biểu tượng này trước khi nó sẽ được truyền đến máy chủ và tất nhiên bạn không thể chỉ cần ghi nó vào thiết bị đầu cuối trong chương trình te chạy trên máy chủ.

Vì vậy, bạn cần phải ngắt phiên theo cách khác. Có rất nhiều phương pháp.

  1. Nếu bạn đang ở trong các chương trình đang chạy, bạn có thể đơn giản chấm dứt nó (exit trong vỏ hoặc sys.exit() trong python hoặc exit() trong nhiều ngôn ngữ khác).
  2. Nếu bạn không thể kiểm soát luồng chương trình, bạn có thể đóng terminal bằng cách giết chết quá trình là chủ sở hữu của thiết bị đầu cuối. Bạn cần tìm quy trình và sau đó sử dụng kill ... (PID của quy trình thay vì ...).
  3. Nếu bạn muốn đóng ứng dụng khách từ phía máy khách, bạn cần thực hiện tương tự (kill ...) nhưng ở phía khách hàng.
111

Trên Linux nó thực sự:

CTRL +] sau đó ENTER

Cuối cùng gõ vào lệnh quit.

^] 

telnet> quit 
Connection closed. 
[[email protected] ~]$ 
+7

Và sau đó gõ thoát. Điều này thậm chí còn khó khăn hơn thoát khỏi vi. –

+1

Thay vì nhập 'quit', bạn cũng có thể nhấn 'CTRL' +' D' (nghĩa là "kết thúc luồng") để thoát telnet. – qwertz

+1

Thay vì 'thoát', bạn có thể nhập' q'. –

15

Để thoát khỏi telnet trên redhat:
loại "CTRL+5" và sau đó gõ "quit"

+0

Nó hoạt động khi máy chủ từ xa đã chết. Tuyệt quá! – LDMdev

+0

Làm việc trong linux vòm là tốt. – gustavwiz

1

Các ^] nghĩa ctrl + right khung. Như kỳ lạ như vậy, nó hoạt động. Bạn sẽ được đưa đến dấu nhắc telnet, nơi bạn có thể gõ thoát.

Trên bàn phím quốc tế, ký tự ] thường không phải là một khóa duy nhất và cần được thay thế bằng một số khóa khác. Khóa chính thường là khóa ở bên phải của P hoặc phím tiếp theo sau đó.

Dưới đây là một danh sách dựa trên ý kiến ​​dưới đây:

Finnish, Swedish, Norwegian, Danish: ctrl + å 
French: ctrl + 6 
German: ctrl + ü 
Swiss: ctrl + ¨ 
Hungarian: ctrl + 5 
Portuguese: ctrl + ´ 
Dutch, Belgian: ctrl + $ 
Canadian French: ctrl + ç 
1

Trên bàn phím danish của tôi nó không phải là Ctrl + å - nhưng thay vì chìa khóa để phía bên phải của å (trong đó có một mũ, dấu ngã và âm sắc)

2

Để Đóng phiên Sử dụng dưới lệnh

  1. Ctrl +]
  2. telnet> bỏ

nó hoạt động hoàn hảo trong REHL và CentOS.

Các vấn đề liên quan