小编4m1*_*4j1的帖子

bash:非法号码

当我运行这个bash脚本时:

if [ [$EUID -ne 0] ]; then
   echo "This script must be run as root" 1>&2 
   exit 1
else 

printf " whathever "

exit 0 
fi
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

./myScript: 15: [: Illegal number: [
Run Code Online (Sandbox Code Playgroud)

你看到有什么问题吗?

bash shell

5
推荐指数
1
解决办法
3万
查看次数

使用 Python 获取 DNS 解析时间和响应时间

PycURL 或任何其他 python pakcage 是否提供以下信息:

  • 抬头
  • 连接时间

我想获得与此 cURL 命令相同的信息(不使用子进程调用命令):

命令

curl -s -w '\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n' -o /dev/null http://stackoverflow.com/
Run Code Online (Sandbox Code Playgroud)

输出:

Lookup time:    0.029
Connect time:   0.144
PreXfer time:   0.144
StartXfer time: 0.263

Total time: 0.803
Run Code Online (Sandbox Code Playgroud)

python dns curl pycurl performance-testing

5
推荐指数
1
解决办法
3070
查看次数

以JSON格式获取Tweepy搜索结果

我希望Twitter上的搜索结果使用Tweepy作为JSON.我在这里看到我应该为Tweepy代码添加一个类来使这个功能有效.

但是当我看到Tweepy代码时,这就是我得到的:

class JSONParser(Parser):

    payload_format = 'json'

    def __init__(self):
        self.json_lib = import_simplejson()

    def parse(self, method, payload):
        try:
            json = self.json_lib.loads(payload)
        except Exception, e:
            raise TweepError('Failed to parse JSON payload: %s' % e)

        needsCursors = method.parameters.has_key('cursor')
        if needsCursors and isinstance(json, dict) and 'previous_cursor' in json and 'next_cursor' in json:
            cursors = json['previous_cursor'], json['next_cursor']
            return json, cursors
        else:
            return json

    def parse_error(self, payload):
        error = self.json_lib.loads(payload)
        if error.has_key('error'):
            return error['error']
        else:
            return error['errors']
Run Code Online (Sandbox Code Playgroud)

所以我没有义务破解它的代码,因为功能已经存在.

这是我的代码的样子:

from tweepy.parsers import JSONParser
for …
Run Code Online (Sandbox Code Playgroud)

python twitter json tweepy

4
推荐指数
2
解决办法
1万
查看次数

Python 多处理:优雅地终止进程

import multiprocessing
import schedule


def worker():
     #do some stuff


def sched(argv):
    schedule.every(0.01).minutes.do(worker)          
    while True:
        schedule.run_pending()


processs = []
..
..
p = multiprocessing.Process(target=sched,args)
..
..
processs.append(p)

for p in processs:
    p.terminate()
Run Code Online (Sandbox Code Playgroud)

优雅地杀死进程列表?

如果不是,最简单的方法是什么?

目标是将配置文件重新加载到内存中,所以我想杀死所有子进程并创建其他进程,后者将读取新的配置文件。

编辑:添加了更多代码来解释我正在运行一个while True循环

编辑:这是@dano建议后的新代码

def get_config(self):
        from ConfigParser import SafeConfigParser
..
        return argv

def sched(self, args, event):
#schedule instruction:
        schedule.every(0.01).minutes.do(self.worker,args)
        while not  event.is_set():
                schedule.run_pending()                                                                    

def dispatch_processs(self, conf):
        processs = []
        event = multiprocessing.Event()

        for conf in self.get_config():
                process = multiprocessing.Process(target=self.sched,args=( …
Run Code Online (Sandbox Code Playgroud)

python linux multiprocessing python-multiprocessing

4
推荐指数
1
解决办法
1万
查看次数

盐堆:向minion或top file添加谷物

在saltstack文档中说,添加:

{% set node_type = salt['grains.get']('node_type', '') %}

{% if node_type %}
  'node_type:{{ self }}':
    - match: grain
    - {{ self }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

/srv/salt/top.sls
Run Code Online (Sandbox Code Playgroud)

将创造一个叫做的谷物 node_type

我将下面的代码添加到顶层文件中,我想知道为什么我node_type在我的小兵中看不到:

myHost ~ # service salt-master restart; service salt-minion restart;
myHost ~ # salt '*' grains.get "node*"
Run Code Online (Sandbox Code Playgroud)

最后一个命令什么都不返回 我认为这是正常的,因为我还没有定义node_type/etc/salt/grains

这让我提出一个问题:有什么区别:

  • top.sls文件中声明node_type

  • 将它简单地添加到grain file(/etc/salt/grains)或minion文件(/etc/salt/minion)

python jinja2 salt-stack

4
推荐指数
1
解决办法
5115
查看次数

盐定制谷物

我正在尝试编写自定义谷物.我把这段代码放进去了/etc/salt/grains

#!/usr/bin/env python
def function():
    grains = {}
    grains['test'] = "test"
    return grains
Run Code Online (Sandbox Code Playgroud)

并测试它我创建了这个脚本:

import salt.config
import salt.loader
__opts__ = salt.config.minion_config('/etc/salt/minion')
__grains__ = salt.loader.grains(__opts__)
test = __grains__['test']
print test
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

dirs = __grains__['test']
KeyError: 'test'
Run Code Online (Sandbox Code Playgroud)

这有什么问题?

python salt-stack

4
推荐指数
1
解决办法
6207
查看次数

更新后重新加载 vagrant

更改配置脚本后重新加载 vagrant 的最快方法是什么?

我实际上是将文件“mysql.sql”复制到来宾计算机的“Vagrant”中:

config.vm.provision "file", source: "mysql.sql", destination: "mysql.sql"
Run Code Online (Sandbox Code Playgroud)

并从“bootstrap.sh”调用它:

mysql -h localhost -u root -proot < /home/vagrant/mysql.sql
Run Code Online (Sandbox Code Playgroud)

我以前用过:

vagrant destroy
vagrant up
vagrant provision
vagrant ssh
Run Code Online (Sandbox Code Playgroud)

我试着看看是否:

vagrant reload
Run Code Online (Sandbox Code Playgroud)

会做同样的事情,但我对此不确定,因为我的修改发生在 .sql 文件上,而不是在 Vagrant 文件中。

mysql vagrant

4
推荐指数
1
解决办法
7349
查看次数

在没有回溯的情况下引发错误

我想使用raise而不在屏幕上打印回溯。我知道如何用那做try ..catch,但是没有找到一个办法raise

下面是一个例子:

def my_function(self):
    resp = self.resp
    if resp.status_code == 404:
        raise NoSuchElementError('GET'+self.url+'{}'.format(resp.status_code)) 
    elif resp.status_code == 500:
        raise ServerErrorError('GET'+self.url+'{}'.format(resp.status_code))
Run Code Online (Sandbox Code Playgroud)

执行此操作时,如果我有 404,则回溯将打印在屏幕上。

Traceback (most recent call last):
  File "test.py", line 32, in <module>
    print ins.my_function()
  File "api.py", line 820, in my_function
    raise NoSuchElementError('GET ' + self.url + ' {} '.format(resp.status_code)) 
Run Code Online (Sandbox Code Playgroud)

这是一个 API 包装器,我不希望用户看到回溯,而是希望看到 API 响应代码和错误消息。

有没有办法做到这一点?

python api wrapper

4
推荐指数
3
解决办法
7566
查看次数

Python:在共享主机中反向DNS查找

有没有办法使用python进行反向查找,检查共享主机中共享相同IP地址的网站列表.

一些网站为此提供了一个工具.

python shared-hosting reverse-lookup

3
推荐指数
1
解决办法
1万
查看次数

读取json文件和编码问题

我想解析一个JSON文件并source在此代码片段中打印:

{
        "trailers": {
            "quicktime": [], 
            "youtube": [
                {
                    "source": "mmNhzU6ySL8", 
                    "type": "Trailer", 
                    "name": "Trailer 1", 
                    "size": "HD"
                }, 
                {
                    "source": "CPTIgILtna8", 
                    "type": "Trailer", 
                    "name": "Trailer 2", 
                    "size": "Standard"
                }
            ], 
            "id": 27205
        }, 
Run Code Online (Sandbox Code Playgroud)

我写了这段代码:

for item in j:        
        if item['trailers']:
            e = item['trailers']
            for k,value in e.iteritems():
                if k == "youtube":
                    for innerk, innerv in k.iteritems():
                        if innerk == "source" :
                            print innerv
Run Code Online (Sandbox Code Playgroud)

不幸的是我无法解决此错误:

for innerk, innerv in k.iteritems():

AttributeError: 'unicode' object has no attribute 'iteritems'
Run Code Online (Sandbox Code Playgroud)

python json python-2.7

3
推荐指数
1
解决办法
8296
查看次数