首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >signal.alarm阻止脚本执行

signal.alarm阻止脚本执行
EN

Stack Overflow用户
提问于 2014-08-29 01:25:08
回答 1查看 92关注 0票数 0

背景:所以我们在课堂上获得了这个脚本,目的是在我们的Ubuntu上打开随机的非特权端口。他给出了两个TCP示例,并要求我们打开另外两个TCP端口和两个UDP端口。我们将使用套接字库和Python编程语言来完成这一任务。

所以我最初关注的是他给我们的问题。使用python终端--这是我最初执行它之前的最后脚本--知道一般概念将打开Linux来宾上连接的端口:

代码语言:javascript
复制
#!/usr/bin/env python

import signal
import socket
import sys
import time
import os

s1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s3 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s4 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s5 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s6 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

def tcp_server() :
    TCP_IP = '127.0.0.1'

    s1.bind((TCP_IP, 6005))
    s2.bind((TCP_IP, 1123))
    s3.bind((TCP_IP, 6009))
    s4.bind((TCP_IP, 1124))
    s5.bind((TCP_IP, 6006))
    s6.bind((TCP_IP, 6007))

    s1.listen(1)
    s2.listen(2)
    s3.listen(3)
    s4.listen(4)

tcp_server() 

def SigAlarmHandler(signal, frame) :
    print("Received alarm TCP server is shutting down")
    sys.exit(0)

signal.signal(signal.SIGALRM, SigAlarmHandler)
signal.alarm(int(sys.argv[1]))

while True :
    pass

当我在Ubuntu上执行脚本时,会收到以下错误消息:

代码语言:javascript
复制
Traceback (most recent call last):
    signal.alarm(int(sys.argv[1]))
IndexError: list index out of range

所以我挖了一下,找到了这两个小块信息。

signal.alarm Python:https://docs.python.org/2/library/signal.html

Unix手册页报警(2) http://unixhelp.ed.ac.uk/CGI/man-cgi?alarm+2

查看告警手册页,它似乎期待一个int类型,所以我不相信显式的数据转换是必要的。虽然我对脚本的总体方向也没有信心。教授刚给了我们奖金。他说他会看的,但我不确定他什么时候会回来找我。

我认为这段代码是设置好的,如果一个打开的端口被探测到,脚本就会终止。查看手册页,如果返回大于0的int,就会产生警报。触发脚本的终止。虽然使用IndexError而不知道它所指的是什么索引,但我不知道在哪里可以缩小范围来解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-29 01:40:03

最有可能的解释是,您没有向脚本传递任何命令行参数,而引发IndexError的是IndexError。与信号或插座无关。

使用./ScriptName.py 5调用您的脚本,它应该可以工作,警报将在5秒后启动,您的服务器应该退出。

如果您不熟悉sys.argv,请参考:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25560359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档