当我运行这个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)
你看到有什么问题吗?
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) 我希望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) 做
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) 在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和
/etc/salt/grains)或minion文件(/etc/salt/minion)我正在尝试编写自定义谷物.我把这段代码放进去了/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)
这有什么问题?
更改配置脚本后重新加载 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 文件中。
我想使用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进行反向查找,检查共享主机中共享相同IP地址的网站列表.
一些网站为此提供了一个工具.
我想解析一个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)