首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘'Sh’对象没有属性

问‘'Sh’对象没有属性
EN

Stack Overflow用户
提问于 2019-08-06 23:07:31
回答 1查看 425关注 0票数 0

我试图列出我的网络上的所有ip地址,我找到了这段代码,但我遇到了这个问题。它表明sh没有属性。

我尝试过很多东西,比如导入pbs和把sh变成类。我目前正在使用windows 10并运行最新的python版本。

代码语言:javascript
复制
import pbs
class Sh(object):
    def getattr(self, attr):
        return pbs.Command(attr)
sh = Sh()

for num in range(10,40):
    ip = "192.168.0."+str(num)

    try:
        sh.ping(ip, "-n 1",_out="/dev/null")
        print("PING ",ip , "OK")
    except sh.ErrorReturnCode_1:
        print("PING ", ip, "FAILED")

我应该看到我相信的ip地址列表,但是我得到了以下信息:

代码语言:javascript
复制
Traceback (most recent call last):
  File "scanner.py", line 11, in <module>
    sh.ping(ip, "-n 1",_out="/dev/null")
AttributeError: 'Sh' object has no attribute 'ping'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "scanner.py", line 13, in <module>
    except sh.ErrorReturnCode_1:
AttributeError: 'Sh' object has no attribute 'ErrorReturnCode_1'

有什么帮助吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-07 01:14:20

在Linux上测试。

(Windows的ping文档)

对于模块sh,它应该是

代码语言:javascript
复制
import sh

for num in range(10, 40):
    ip = "192.168.0." + str(num)

    try:
        sh.ping(ip, "-n 1", "-w 1") #, _out="nul") # Windows 10
        #sh.ping(ip, "-c 1", "-W 1") #, _out="/dev/null") # Linux
        print("PING", ip, "OK")
    except sh.ErrorReturnCode_1:
        print("PING", ip, "FAILED")

Windows 10没有设备/dev/null (它存在于Linux上),但很可能它可以使用nul跳过文本。

在Linux上,即使没有_out,它也不会显示文本,所以在Windows上可能不需要_out。

Linux使用-c 1只进行一次ping。Windows -n 1或/n 1。我还使用-W 1在1秒后超时-因此它不会等待太久的响应。Windows可能使用-w 1或/w 1。

对于模块pbs,您可能只需将所有的sh替换为pbs

代码语言:javascript
复制
import pbs

和

代码语言:javascript
复制
except pbs.ErrorReturnCode_1:

但我没有这个模块来测试它。

使用标准模块os,它需要Linux上的/dev/null。

代码语言:javascript
复制
import os

for num in range(10, 40):
    ip = "192.168.0." + str(num)

    exit_code = os.system("ping -n 1 -w 1 " + ip + " > nul") # Windows
    #exit_code = os.system("ping -c 1 -W 1 " + ip + " > /dev/null") # Linux

    if exit_code == 0:
        print("PING", ip, "OK")
    else:
        print("PING", ip, "FAILED")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57385061

复制
相关文章

相似问题

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