企业电子商务网站的建设方式,最新营销模式,和田网站制作,手机自建网站xshell具有脚本功能#xff0c;可以实现很多自动化的操作。
从xshell的官方手册#xff0c;可以知道xshell的脚本分为3类#xff1a;
xsh.Session
下面的函数或变量在xshell会话中使用#xff0c;使用的时候要指定会话一起使用#xff0c;比如使用Sleep()函数#x…xshell具有脚本功能可以实现很多自动化的操作。
从xshell的官方手册可以知道xshell的脚本分为3类
xsh.Session
下面的函数或变量在xshell会话中使用使用的时候要指定会话一起使用比如使用Sleep()函数要这样使用xsh.Session.Sleep(1000)。
函数
返回值函数参数说明VoidOpen(LPCTSTR lpszSession)lpszSession字符串指Xshell会话路径或Xshell使用的URL类型。打开新会话或URL。需要把 /s选项置于字符串的前端。例如要打开A.xsh会话使用‘/s $PATH/A.xsh’VoidClose()关闭当前连接的会话。VoidSleep(long timeout)Timeout毫秒单位的时间值Xshell按照指定时间进行待机。VoidLogFilePath(LPCTSTR lpszNewFilePath)lpszNewFilePath包括路径在内的文件名指定日志文件。voidStartLog()开始会话的日志记录。日志将被保存到LogFilePath()指定的路径。如果没有指定日志文件路径则使用默认路径。voidStopLog()停止日志记录。
变量
名称类型说明ConnectedBOOL检查当前会话是否连接。LocalAddressBSTR导入本地地址。PathBSTR导入当前会话文件的路径。RemoteAddressBSTR导入远程地址。RemotePortlong导入远程端口号。LoggingBOOL检查当前会话是否记录日志。LogFilePathBSTR保存为日志文件。
xsh.Screen
下面的函数和变量在处理xshell终端屏幕的时候使用使用的时候要配合xsh.Screen一起使用比如要使用Clear()函数要这样使用xsh.Screen.Clear
函数
返回值函数参数说明voidClear()清除终端屏幕。voidSend(LPCTSTR lpszStrToSend)lpszStrToSend用户拟要发送的字符串向终端发送消息。BSTRGet(long nBegRow, long nBegCol, long nEndRow, long nEndCol)nBegRow终端的行起始位置nBegCol终端的列起始位置nEndRow终端的行末端位置nEndCol终端的列末端位置读入终端规定区域的字符串并返回读取值。voidWaitForString(LPCTSTR lpszString)lpszString终端中打印的字符串等待终端打印lpszString字符串。LongWaitForStrings(VARIANT FAR* strArray, long nTimeout)strArray终端中打印的字符串nTimeout等候时间返回值发现的字符数等待某消息直到超时。
变量
名称类型说明CurrentColumnlong返回当前列数。CurrentRowlong返回当前行数。Columnslong返回与终端的列宽相同的列数。Rowslong返回与终端的行高相同的行数。SynchronousBOOL设置屏幕同步 (True屏幕同步false屏幕不同步)
xsh.Dialog
使用的时候要配合xsh.Dialog一起使用比如要使用MsgBox()函数要这样使用xsh.Dialog.MsgBox()
函数
返回值函数参数说明LongMsgBox(LPCTSTR lpszMsg)LpszMsg想要发送的字符串打开一个消息框stringPrompt(LPCTSTR lpszMessage, LPCTSTR lpszTitle, LPCTSTR lpszDefault, BOOL bHidden)lpszMessage在对话框上显示的字符串。lpszTitle在对话框标题栏显示的字符串。lpszDefault在对话框输入框中初始显示的字符串。bHidden如果设置为True,输入会被隐藏 (e.g. *****)作用返回用户在对话框中的输入。返回值用户在对话框中的输入。intMessageBox(LPCTSTR lpszMessage, LPCTSTR lpszTitle, int nType)lpszMessage在消息框中显示的字符串。lpszTitle在消息框标题栏显示的字符串。nType按钮类型参考下面的表。作用按照用户选择的按钮类型显示消息框并返回相应的值。返回值参考下面的表。
按钮类型
类型Button返回值0OK11OK / Cancel1 / 22Abort / Retry / Ignore3 / 4 / 53Yes / No / Cancel6 / 7 / 24Yes / No6 / 75Retry / Cancel4 / 26Cancel / TryAgain / Continue2 / 10 / 11
实例
Sub MainDim hostname, username, passwordhostname xsh.Dialog.Prompt (Insert Hostname, Prompt Dialog, hostname, 0)username xsh.Dialog.Prompt (Username, Prompt Dialog, , 0)password xsh.Dialog.Prompt (Password, Prompt Dialog, , 1)if xsh.Dialog.MessageBox(Connect to hostname server, MessageBox,1) 1 thenxsh.Session.Open(ssh:// username : password hostname)End If
End Sub注以下实例来自网上仅供自己编程参考不保证直接能用。 实例1
Sub main xsh.Screen.Synchronous True 使窗口显示与当前输出同步 xsh.Screen.WaitForString Reboot now? (y/n) 等待目标设备发回 Reboot now? (y/n) 字符串 xsh.Screen.Send y VbCr 输入字符 y 并回车
End Sub 实例2
Sub Main *** Connect the session ***
xsh.Session.Open ssh://192.168.1.17/s C:\Users\Administor\AppData\Roaming\NetSarang\Xshell\Sessions\example.xshxsh.Screen.Synchronous truexsh.Screen.WaitForString login:
xsh.Screen.Send username
xsh.Screen.Send VbCr
xsh.Session.Sleep 100xsh.Screen.WaitForString Password:
xsh.Screen.Send password
xsh.Screen.Send VbCr
xsh.Session.Sleep 100 *** Wait for Prompt Message ***
xsh.Screen.WaitForString usernamepassword *** Set File Format ***
Dim app, wb, ws
Set app CreateObject(Excel.Application)
Set wb app.Workbooks.Add
set ws wb.Worksheets(1)xsh.Session.LogFilePath c:\example.log
xsh.Session.StartLogDim waitStrs
waitStrs Array(Chr(10), usernamepassword) make wait message as arrayDim row, screenrow, readline, itmes
row 1 *** Send Command ***
xsh.Screen.Send cat /etc/passwd
xsh.Screen.Send VbCr
xsh.Session.Sleep 100Dim result *** Read Data and Save it as an EXCEL File ***
Do
While true
result xsh.Screen.WaitForStrings(waitStrs, 1000)If result 2 Then
Exit Do
End Ifscreenrow xsh.Screen.CurrentRow - 1
readline xsh.Screen.Get(screenrow, 1, screenrow, 40)
items Split(readline, :, -1)ws.Cells(row,1).Value items(0)
ws.Cells(row,2).Value items(2)row row 1
Wend
Loopwb.SaveAs(C:\chart.xls) save file path
wb.Close
app.QuitSet ws nothing
Set wb nothing
Set app nothingxsh.Screen.Synchronous falsexsh.Session.StopLogEnd Sub实例3
Xshell打开多个session会话
Sub MainDim username, password
username 用户名
password 密码
Dim Hosts(主机名的个数减去1)
hosts(0) 主机名1
hosts(1) 主机名2
hosts(n-1) 主机名n
For Each HostStr In Hosts
xsh.Session.Open (ssh:// username : password HostStr)
xsh.Session.Sleep(50)
Next
End Sub实例4
# import xsh.Session
# import xsh.Screen
# import xsh.Dialogdef get_current_row_info(num: int):获取终端当前行num个字符screenRow xsh.Screen.CurrentRowline xsh.Screen.Get(screenRow, 1, screenRow, num)return linedef Main():# 打开一个已经存在的会话# xsh.Session.Open(ssh://user:pass_word192.168.31.52:22)xsh.Session.Open(G:\\user\\Documents\\NetSarang Computer\\7\\Xshell\\Sessions\\192.168.31.52.xsh)xsh.Screen.Synchronous Truexsh.Session.Sleep(1000)# 切换到root用户xsh.Screen.Send(su root\r)xsh.Session.Sleep(100)line get_current_row_info(30)if Password in line:xsh.Screen.Send(paas_word\n)实例5
# import xsh.Session
# import xsh.Screen
# import xsh.Dialog
import redef get_current_row_info(num: int):获取终端当前行num个字符screenRow xsh.Screen.CurrentRowline xsh.Screen.Get(screenRow, 1, screenRow, num)return linedef Main():# 在一个存在的会话中执行xsh.Screen.Synchronous Truexsh.Session.Sleep(1000)xsh.Screen.Send(ssh zzb192.168.31.52\r)xsh.Session.Sleep(100)# 当第一次登录时会验证初始ssh连接line get_current_row_info(100)if re.search(yes/no, line):xsh.Screen.Send(yes\r)xsh.Session.Sleep(100)# 终端出现提示输入密码时输入密码line get_current_row_info(100)if re.search(paasword, line, flagsre.I):xsh.Screen.Send(yes\r)if password in line:xsh.Screen.Send(paas_word\r)
实例6
/* 测试函数 */
function test()
{/* 发送echo 112233 /tmp/testfile */xsh.Screen.Send(echo 112233 /tmp/testfile);xsh.Screen.Send(String.fromCharCode(13));/* 发送cat /tmp/testfile */xsh.Screen.Send(cat /tmp/testfile);xsh.Screen.Send(String.fromCharCode(13));/* 字符串处理 */var ScreenRow, ReadLine, Items;/* 读取末行的40个字符 */ScreenRow xsh.Screen.CurrentRow - 1;ReadLine xsh.Screen.Get(ScreenRow, 1, ScreenRow, 40);/* 如果读取到的字符不是112233 */if(ReadLine ! 112233){/* 会话框打印实际的字符串 */xsh.Dialog.MsgBox(ReadLine);}
}/* 主函数 */
function Main()
{/* 打开会话根据实际的会话路径修改 */xsh.Session.Open(C:\Users\Administrator\Documents\NetSarang Computer\6\Xshell\Sessions\ubuntu.xsh);xsh.Screen.Synchronous true;/* 开始记录日志 */xsh.Session.LogFilePath C:\Users\Administrator\Documents\NetSarang Computer\6\Xshell\Logs\example.log;xsh.Session.StartLog();/* 等待输入start */
// xsh.Screen.WaitForString(start);/* 发送rm -rf /tmp/testfile */xsh.Screen.Send(rm -rf /tmp/testfile);/* 发送回车 */xsh.Screen.Send(String.fromCharCode(13));/* 发送touch /tmp/testfile */xsh.Screen.Send(touch /tmp/testfile);xsh.Screen.Send(String.fromCharCode(13));/* 测试100次 */for(var i 1; i 100; i){test();xsh.Session.Sleep(500);}/* 清屏 */
// xsh.Screen.Clear();
}