我有点期待编程,所以我需要帮助。
这是一个示例会话:
CMD> disable inactive
Accounts to be disabled are:
albert_a - UUID abcd-11-2222
brian_b - UUID bcde-22-3333
charley_c - UUID cdef-33-4444
Starting processing
...hundreds of lines of processing...
CMD> quit
Done.
我需要在那里获取用户名和UUID(UUID通过其他方式不可用),然后将它们保存到文件中。我该如何做到这一点?
编辑:列表的- UUID
(空格划线空间“UUID”)部分是静态的,在“数百行处理”中找不到任何地方,所以我< em>想想我可以匹配那种模式......但是怎么样?
答案 0 :(得分:1)
假设评论中我的问题的回答是'是',这是我的建议。
首先,您需要生成任何程序将您连接到服务器(ssh,telnet或其他),并登录(期望用户提示,发送密码,期望提示)。你会发现很多样本,所以我会跳过那部分。
一旦你完成了这个,并有一个命令提示符,这就是我将如何发送命令并期望&amp;匹配输出:
set file [open /tmp/inactive-users w] ;# open for writing and set file identifier
send "disable inactive\r"
expect {
-re "(\[a-z0-9_\]+) - UUID" { ;# match username followed by " - UUID"
puts $file "$expect_out(1,string)" ;# write username matched within parenthesis to file identifier
exp_continue ;# stay in the same expect loop in case another UUID line comes
}
-re "CMD>" { ;# if we hit the prompt, command execution has finished -> close file
close $file
}
timeout { ;# reasonably elegant exit in case something goes bad
puts $file "Error: expect block timed out"
close $file
}
}
请注意,在正则表达式中,我假设用户名只能由小写字母,数字和下划线组成。
如果您需要有关登录件的帮助,请告诉我,但您应该没问题。那里有很多样本。
希望有所帮助!