背景:我试图在PXE获取IP地址时自动重启服务器。 这是为了重现一个问题,重现的唯一方法是在每次重启的同时冷启动它。 我厌倦了手动做这个,并花了大概10个小时在这个脚本和故障到目前为止..
我正在尝试从服务器上的串行控制台读取行,同时查找某个string,然后发出重新启动命令。
现在,我可以得到这个脚本回应串口控制台上的内容的唯一方法是closures服务器,启动minicom,启动服务器,当文本启动时,我可以退出minicom而无需重置,然后启动我的脚本。
第一次通过,脚本工作正常,甚至在最后的iLO命令工作,然后重新启动while循环,但是我没有从控制台得到任何输出了。
由于依赖关系,安装devtools失败,但依赖关系不适用于R版本
如何在亚马逊微EC2服务器上安装SVN客户端(Amazon Linux)
我如何在EC2实例上安装xclip?
networking文件系统预取? (或者:互联网文件系统是否优化以减less往返)
linux如何在特定文件夹中查找特定文件
看来我要么没有正确打开串口,而是打印get_settings和波特率,停止位等,都是正确的。
我已经search并使用了许多不同地方的代码片段来破解这个脚本,而且我真的感到沮丧,我无法自行解决这个问题。
[root@localhost ~]# python2 bootorder.py {'parity': 'N','baudrate': 115200,'bytesize': 8,'xonxoff': False,'rtscts': False,'timeout': None,'inter_byte_timeout': None,'stopbits': 1,'dsrdtr': False,'write_timeout': None}
正如你上面看到的,当我运行它的时候,我已经打印出了串口设置,它们和minicom以及服务器端的串行控制台相匹配。
那么minicom是怎样开放我在脚本中没有做的端口的呢? 我遵循很多网站的例子,有时它确实有用,我不知道如何独立完成这项工作。
这是我的脚本:
#!/usr/bin/python import io import hpilo import os import sys import time import serial from datetime import datetime outfile='/tmp/bootordercount.txt' # configure the serial connections (the parameters differs on the device you are connecting to) port = '/dev/ttyS0' ser = serial.Serial(port,115200,timeout=None) cycles = 1 if ser.isOpen(): ser.close() ser.open() if ser.isOpen(): try: # ser.flushInput() #flush input buffer,discarding all its contents # ser.flushOutput()#flush output buffer,aborting current output #and discard all that is in buffer print(ser.get_settings()) with open(outfile,'a') as f: while ser.isOpen(): line = ser.readline() print line if "CLIENT IP:" in line: print "Client string seen!" ilo = hpilo.Ilo('10.0.8.203','administrator','password') #configure ilo function ilo.cold_boot_server() #cold boot the server print cycles # f.write(datetime.utcnow().isoformat() + 't' + cycles + 'n') # f.flush() cycles += 1 except Exception,e1: print "error communicating...: " + str(e1) ser.close()
感谢您的意见和帮助!
从列表/variables中删除一个项目 – Bash
在Linux中运行的进程如何确定它被暂停了多久?
为什么gcc使用jmp来调用优化版本的函数
awk比较input值
如何调用boost multi_index元素的非常量成员函数
它可能会节省一些与串行端口中的其他线路有关的事情:DTR,DSR等等。它们的使用通常是不一致的,并且它们经常被用于其他用途以外的目的。
也许minicom使用DTR来初始化连接。 尝试添加此串行open 。
s.setDTR(False) sleep(0.025) s.setDTR(True)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。