SecureCRTでのPythonスクリプトの記述

この記事の主な内容は、[SecureCRT pythonスクリプティング学習ガイド](https://www.cnblogs.com/zhaoyujiao/p/4908627.html)から転送されます。

SecureCRTは、VB、JavaScript、Pythonなどの複数のスクリプト言語をサポートしています。

1。** Python言語を使用してSecureCRTのダイアログ機能を実現します**#

# $language ="Python"
# $interface="1.0"

# crt.Dialog.FileOpenDialog([title,[buttonLabel,[defaultFilename,[filter]]]])
# 単一のファイルを選択するためのダイアログボックスがポップアップします;特定のファイルを選択すると、ファイルの絶対パスが返され、ポップアップウィンドウの「キャンセル」を選択すると、空が返されます。
filePath =  crt.Dialog.FileOpenDialog("please open a file","open","a.log","(*.log)|*.log")
# filePath =  crt.Dialog.FileOpenDialog("","","a.log","")
# crt.Dialog.MessageBox(message,[title,[icon|buttons]])警告、ボタンタイプはメッセージボックスをポップアップします。ボタンを定義し、ボタンとテキストメッセージを使用して、ユーザーとの簡単な対話を実現できます。
crt.Dialog.MessageBox(filePath,"",64|0)
crt.Dialog.MessageBox("セッションが切断されました","session",64|2)
crt.Dialog.MessageBox("終了するかどうかを確認します","session",32|1)
crt.Dialog.MessageBox("終了するかどうかを確認します","session",32|3)
crt.Dialog.MessageBox("インストールを続行するかどうか","session",32|4)
crt.Dialog.MessageBox("この会話はすでに開かれています","session",48|5)
crt.Dialog.MessageBox("このウィンドウに接続できません","session",16|6)

# crt.Dialog.Prompt(message [, title [,default[,isPassword ]]])
# 入力ボックスがポップアップし、ユーザーはファイル名、パス、IPアドレスなどのテキストを入力できます。,クリックすると'ok'、入力文字列を返します。それ以外の場合は"" 
password = crt.Dialog.Prompt("password","session","admin",False)
crt.Dialog.MessageBox(password,"password",64|0)
password = crt.Dialog.Prompt("password","session","",True)
crt.Dialog.MessageBox(password,"password",64|0)

2。** Python言語を使用してSecureCRTにScreen関数を実装します**#

# $language ="Python"
# $interface="1.0"

# CurrentColumnは、現在のカーソルの列座標を返します。
curCol =  crt.Screen.CurrentColumn
crt.Dialog.MessageBox(str(curCol))

# CurrentRowは、現在のカーソルの行座標を返します。
curRow = crt.Screen.CurrentRow
crt.Dialog.MessageBox(str(curRow))

# Columnsは、現在の画面の最大列幅を返します
cols = crt.Screen.Columns
crt.Dialog.MessageBox(str(cols))

# Rowsは、現在の画面の最大行幅を返します
rows = crt.Screen.Rows
crt.Dialog.MessageBox(str(rows))

# IgnoreEscapeは、デフォルトで取得される3つのメソッドWaitForString、WaitForStrings、およびReadStringを使用するときに、エスケープ文字(キャリッジリターンなどの特殊文字)を取得するかどうかを定義します。
crt.Screen.IgnoreEscape = False
crt.Dialog.MessageBox(crt.Screen.ReadString(["\03"],5)) #ctrlを取得+c

crt.Screen.IgnoreEscape = True
crt.Dialog.MessageBox(crt.Screen.ReadString(["\03"],2)) #ctrlを取得しないでください+c

# MatchIndexは、WaitForStringsとReadStringの3つのメソッドが使用される場合、戻り値がパラメーターの位置に従って取得され、1から始まり、一致しない場合は0を返すことを定義します。.
outPut = crt.Screen.ReadString(["error","warning","#"],10)
index = crt.Screen.MatchIndex
if(index ==0):
 crt.Dialog.MessageBox("Timed out!")elif(index ==1):
 crt.Dialog.MessageBox("Found 'error'")elif(index ==2):
 crt.Dialog.MessageBox("Found 'warning'")elif(index ==3):
 crt.Dialog.MessageBox("Found '#'")
    

# 同期画面の同期プロパティを設定します。 falseに設定すると、スクリプトでWaitForString、WaitForStrings、ReadString関数を使用すると、一部のデータが失われる可能性があります。trueに設定すると、画面がフリーズする場合があります。デフォルトはfalseです。
crt.Screen.Synchronous = True
crt.Screen.Send("\r\n")
crt.Screen.ReadString("#")
crt.Screen.Send("\r\n")
crt.Screen.WaitForString("#")
crt.Screen.Send("\r\n")
crt.Screen.WaitForStrings(["#",">"])
crt.Screen.Send("conf t\r\n") 
  
# 方法
# Clear()画面クリア機能
# crt.Screen.Clear()

# get()座標に応じて、画面上の文字を長方形のボックスに取り出します(つまり、1つの行と1つの列から他の行と他の列へ)、文字列にキャリッジリターンとラインフィードが含まれていないため、これは主に、フォーマットされていない文字列をカーソルで取得するか、特定の領域で文字列の小さなセグメントを取得するために使用されます。
out = crt.Screen.Get(row1, col1, row2, col2)
crt.Dialog.MessageBox(out)

# get2()画面上の文字を座標に従って長方形のボックスに抽出することを説明する(つまり、1つの行と1つの列から他の行と他の列へ)、文字列にキャリッジリターンとラインフィードが含まれているため、これは主に大きなフォーマットの文字列を取得するために使用されます。
crt.Screen.Get2(row1, col1, row2, col2)

# IgnoreCaseは、グローバルパラメータ設定を使用して、WaitForString、WaitForStrings、およびReadStringの3つの関数が大文字と小文字を区別するかどうかを制御します。デフォルトはfalseです。すべての大文字と小文字の文字列がチェックされます。trueに設定すると、大文字と小文字の区別はチェックされません。
crt.Screen.IgnoreCase = True
crt.Screen.Send("show memory\r\n")
crt.Screen.WaitForString("more")
crt.Screen.Send("\r\n")
crt.Screen.WaitForStrings("more","#")
crt.Screen.Send("\r\n")
crt.Screen.ReadString("more","#")

# Send()リモートデバイスまたは画面に文字列を送信します。画面に文字列を送信するときは、2番目のパラメータをTrueとして指定する必要があります。
crt.Screen.Send("show version\r\n")
crt.Screen.Send("\r\nhello,world!\r\n",True)
crt.Screen.IgnoreCase = True
while(crt.Screen.WaitForString("more",10)):    
 crt.Screen.Send("\r\n")

# SendKeys()組み合わせキーを含むキーを現在のウィンドウに送信します。たとえば、同様のキーを送信できます。"CTRL+ALT+C"このようなキーの組み合わせを待ち、次のように記述します:crt.screen.sendkeys("^%c");この関数には言語サポートが必要です。現在、VBSスクリプトとJSスクリプトのみを使用できます。

# SendSpecial()特別な制御コードを送信できます。この制御コードはCrtの組み込み関数であり、Menu、Telnet、およびVT関数の関数リストで提供されるすべての関数を含めることができます。
crt.Screen.SendSpecial("vT_HOLD_SCREEN")

# WaitForCursor()カーソルの移動を待機している場合、戻り値は移動時にtrueになり、タイムアウトパラメータとタイムアウトがある場合はfalseになります。それ以外の場合は、常にカーソルの移動を待機します。この関数を使用して、コマンドの出力が終了したかどうかを判別します。
crt.Screen.WaitForCursor(5)
crt.Screen.Send("\r\nhello,world!\r\n",True)if( crt.Screen.WaitForCursor(5)):
 crt.Screen.Send("show version\r\n")

# WaitForKey()キーボードキーを検出するとtrueを返し、タイムアウトパラメータとタイムアウトがある場合はfalseを返し、それ以外の場合はキーを待ちます。
if(crt.Screen.WaitForKey(5)):
 crt.Screen.Send("show version\r\n")

# WaitForString()通常、コマンドの送信後に文字列を待機するために使用されます
# crt.Screen.WaitForString(string,[timeout],[bCaseInsensitive])
crt.Screen.WaitForString("#",10)

# WaitForStrings()WaitForStringと同じ関数で、複数の文字列を待つことができます
outPut = crt.Screen.WaitForStrings(["error","warning","#"],10)
index = crt.Screen.MatchIndex
if(index ==0):
 crt.Dialog.MessageBox("Timed out!")elif(index ==1):
 crt.Dialog.MessageBox("Found 'error'")elif(index ==2):
 crt.Dialog.MessageBox("Found 'warning'")elif(index ==3):
 crt.Dialog.MessageBox("Found '#'")
    
# ReadString()WaitForStrings関数と同様に、数文字が表示されるのを待ちますが、違いは、文字列の前に表示されるすべての文字も読み取ることです。
crt.Screen.ReadString([string1,string2..],[timeout],[bCaseInsensitive])1.文字列、必須パラメーター、待機文字列、少なくとも1つは、次のような特殊文字にすることができます。:\r\n;
2、 タイムアウト、オプションのパラメータ、タイムアウト期間。対応する文字列が検出されない場合はfalseを返し、このパラメータがないと永久に待機します。
3、 bCaseInsensitive、オプションのパラメーター、大文字と小文字を区別しない、デフォルト値はfalseです。これは、文字列の大文字と小文字が検出され、trueの場合は大文字と小文字が検出されないことを意味します。

3、例#

1. 例1:コマンドをループで実行する##

# $language ="python"
# $interface="1.0"

# This automatically generated script may need to be
# edited in order to work correctly.import time

start_time = time.time()
end_time = time.time()

def Main():while True:
  end_time = time.time()
  crt.Screen.Synchronous = False
  crt.Screen.Send("?")
   crt.Screen.Send("\r\n")
  crt.Screen.Send("\r\n")
  time.sleep(1)
 running_time = end_time - start_time
 msg ="セッションが切断されました\n"+ \
   " running ms : "+str(running_time)+"\n"+ \
   " start ms   : "+str(start_time)+"\n"+ \
   " ent ms     : "+str(end_time)+"\n"
 crt.Dialog.MessageBox(msg,"session",64|2)Main()

参照#


Author: Frytea
タイトル:SecureCRTでのPythonスクリプト
Link: https://blog.frytea.com/archives/469/
Copyright: This work by TL-Song is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Recommended Posts

SecureCRTでのPythonスクリプトの記述
ランダムコマンド自動テストスクリプト| SecureCRTでのPythonの実装
UbuntuでのPythonMySQLd
[python] ubuntuの下のpython2とpython3
Linuxにpython環境をインストールする
一般的に使用されるPython3スクリプトプログラミング.md
Pythonウォーターフォールラインインジケーターの作成例
ubuntuでのPython中国語エンコーディング設定
Python3をインストールし、CentOS8でansible
CentOS7の下にPython3とPyをインストールします