电信设备中,HLR(Home Location Register)是非常昂贵的,通常不会有为provisioning开发而准备的HLR。因此,我们需要一个模拟器,能够简单地应答客户端发送过来的HLR指令。Expect是Unix/Linux下自动处理人机交互指令的脚步语言,用它来写一个HLR模拟器就最合适不过了。

一个最简单的NSN HLR模拟器是这样的,它可以

1. 模拟登录和退出

2. 模拟执行ZM开头的NSN HLR指令并回复“COMMAND EXECUTED”

3. 对于ZMIO、ZMNO等打印用户信息的指令,会读取预先设定好的文件并将其内容全部显示出来

4. 识别错误指令并返回错误信息

#! /bin/env expect set timeout 86400 proc handle_login {} { send_user "ENTER USERNAME < " expect -re ".*/n" {} send_user "ENTER PASSWORD < " expect -re ".*/n" {} send_user "/nWELCOME TO THE NSN HLR SIMULATOR/n/nMAIN LEVEL COMMAND <___>/n< /n" } proc handle_zmio {} { set file [open "/export/home/ilink/simulator/zmio_result.txt" "r"] while { [gets $file line] != -1 } { send_user "$line/n" } close $file send_user "COMMAND EXECUTED/n< /n" } proc handle_zmbo {} { set file [open "/export/home/ilink/simulator/zmbo_result.txt" "r"] while { [gets $file line] != -1 } { send_user "$line/n" } close $file send_user "COMMAND EXECUTED/n< /n" } proc handle_zmko {} { set file [open "/export/home/ilink/simulator/zmko_result.txt" "r"] while { [gets $file line] != -1 } { send_user "$line/n" } close $file send_user "COMMAND EXECUTED/n< /n" } proc handle_zmgo {} { set file [open "/export/home/ilink/simulator/zmgo_result.txt" "r"] while { [gets $file line] != -1 } { send_user "$line/n" } close $file send_user "COMMAND EXECUTED/n< /n" } proc handle_zmso {} { set file [open "/export/home/ilink/simulator/zmso_result.txt" "r"] while { [gets $file line] != -1 } { send_user "$line/n" } close $file send_user "COMMAND EXECUTED/n< /n" } proc handle_zmno {} { set file [open "/export/home/ilink/simulator/zmno_result.txt" "r"] while { [gets $file line] != -1 } { send_user "$line/n" } close $file send_user "COMMAND EXECUTED/n< /n" } proc handle_zmqo {} { set file [open "/export/home/ilink/simulator/zmqo_result.txt" "r"] while { [gets $file line] != -1 } { send_user "$line/n" } close $file send_user "COMMAND EXECUTED/n< /n" } proc handle_logout {} { send_user "END OF DIALOGUE SESSION/n" } proc handle_cmd {} { send_user "COMMAND EXECUTED/nXXX HANDLING COMMAND <MX_>/n< /n" } proc handle_dummy {} { send_user "MAIN LEVEL COMMAND <___>/n< /n" } proc handle_error {} { send_user "/*** UNKNOWN COMMAND CLASS ***//n/nMAIN LEVEL COMMAND <___>/n< /n" } handle_login expect { -re "Z;" { handle_logout } -re "ZMIO:.*;/n" { handle_zmio exp_continue } -re "ZMBO:.*;/n" { handle_zmbo exp_continue } -re "ZMKO:.*;/n" { handle_zmko exp_continue } -re "ZMGO:.*;/n" { handle_zmgo exp_continue } -re "ZMSO:.*;/n" { handle_zmso exp_continue } -re "ZMNO:.*;/n" { handle_zmno exp_continue } -re "ZMQO:.*;/n" { handle_zmqo exp_continue } -re "ZM.*;/n" { handle_cmd exp_continue } -re "^/[/r/n]" { handle_dummy exp_continue } -re "^/[^Z].*" { handle_error exp_continue } }

NSN HLR simulator for provisioning in expect相关推荐

  1. 21英里法则_一英里的跑道将带您到任何地方

    21英里法则 Did anyone else go through a phase when they were young when they wanted to become a pilot? I ...

  2. Xcode couldn‘t find any iOS App Development provisioning profiles matching ‘com.example.***‘

    在更新完iOS14.3后,Xcode真机调试时报错,无法进行真机测试: 报以下错误: No profiles for 'com.example.software.Login' were found: ...

  3. Expect 教程中文版

    原文链接 本教程由*葫芦娃*翻译,并做了适当的修改,可以自由的用于非商业目的. [BUG] 有不少部分,翻译的时候不能作到"信,达".当然了,任何时候都没有做到"雅&qu ...

  4. Linux使用expect自动登录,linux中使用expect实现自动登录(示例代码)

    在实际生产使用中,比如执行批量操作时,我们不想创建ssh认证,需要使用到密码登录或者链接,此时可以使用expect来操作自动添加password: 在centos系统上expect默认是没有安装的,所 ...

  5. linux脚本expect自动登录,SHELL脚本:利用expect完成SSH自动登录

    有个业务需求,需要在服务器上安装一个Agent,安装Agent其实很简单,但是顶不住服务器数量太多,所以不可能一台台的登上去安装,所以写了个脚本可以实现批量自动化安装 1.脚本实现的功能 根据提供的I ...

  6. autoware中lgsvl Simulator安装与使用:LGsvl Simulator 2021.2.1版(九)

    autoware安装与使用:LGsvl Simulator 2021.2.1版(windows10)(九) 介绍如何在windows下安装LGsvl Simulator 2021.2.1版 环境:wi ...

  7. 【Qt】QPixmap加载图片报错:Corrupt JPEG data: premature end of data segment Didn‘t expect more than one scan

    1.问题描述 在使用QPixmap加载图片时失败,错误信息如下 Corrupt JPEG data: premature end of data segment Didn't expect more ...

  8. zz Expect的安装

    转载一篇靠谱的文章,按照文章所述方法一次成功.只不过我的expect二进制文件最后实在tcl的bin目录下,而不是expect的bin目录下,这个令我有些疑惑,whatever,不算什么大问题,注意一 ...

  9. ssh其他机器的Expect脚本

    ssh登陆其他机器的Expect脚本 #!/usr/bin/expect -fset user [lindex $argv 0] set ipaddr [lindex $argv 1] set pas ...

最新文章

  1. Python哈希函数hashlib
  2. 建立数组并写入数据_redis高并发利器:神奇的位操作,底层原理、数据结构剖析...
  3. github--新手使用错误分析
  4. python退出帮助系统help应该使用exit_python--help - tesion
  5. H.264RTP封包原理
  6. matlab quiver 箭头颜色,matlab – quiver3箭头颜色对应大小
  7. 锐捷长ping_锐捷实战系列(二) Wireshark抓包分析Ping过程
  8. matlab2012工具栏在哪里,Word2010和2013工具在哪里及自定工具栏
  9. 华3交换机配置命令【系统归纳】【方便好查】
  10. anychart HTML5中文乱码,anychart使用手册一.doc
  11. Java实现 蓝桥杯 算法提高 文本加密
  12. Android - 警告:it is always overridden by the value specified in the Gradle build script
  13. php验证码一直错误,yii2.0验证码总是错误
  14. 阿里云-印刷文字识别-营业执照识别
  15. Vue如何引入粒子特效
  16. 1.Android稳定性测试
  17. angular 中如何实现多态与继承
  18. 【Audio】Unity音频模块:加载、转换、剪切、混音、合并
  19. 加利福尼亚大学提出从「因果革命」的七大成就中为「机器学习」寻求良好的模型指导
  20. C语言学习 查询水果价格

热门文章

  1. SCEF引入需求分析及部署应用【转】
  2. freemarker 模板使用记录
  3. 第一个计算出地球周长的人——埃拉托色尼
  4. STM32蓝牙小车制作全过程---刚入门的小白也能会
  5. 生活多快乐:笑死爹的程序段子
  6. 量化感知训练_《量化健身 动作精讲》:专业解读健身动作的秘密
  7. java mvn命令行_Maven命令行使用:mvn clean package(打包)
  8. 【强迫症系列】【win】更改 Python 的 pip install 默认安装依赖路径
  9. urllib库(二)parse模块:urlparse()/urlsplit(),parse_qs()/parse_qsl(),urlunparse()/urlunsplit(),urlencode()
  10. 计算机网络:16---因特网标准(IETF、RFC)