用于测试ezproxy节配置和链接运行状况的命令行工具。

check-ezprox的Python项目详细描述


##检查ezproxy配置



一个简单的命令行脚本,用于检查库数据库是否存在ezproxy配置
。用于检查libguides a-z数据库和
oclc知识库,但易于扩展。使用
python 3.4构建/测试,但至少应恢复到2.7版本。


克隆存储库。

2.可选:如果要使文件可执行,请运行``chmod+x check_ezproxy_run.py``(在bash系统中,这样就不必用python预先结束每个调用)

3。在主目录中,运行``python check_ezproxy_run.py-args``(或``./check_ezproxy_run.py-args``如果执行了上面的步骤2)

4。运行"python setup.py install"进行安装(在此之后,您可以使用"check_ezproxy",安装程序会让它在任何地方都可用)

或使用docker:

1。克隆存储库

2。编辑dockerfile以填写环境变量信息(代替编辑cfg或json配置)

<3。在Docker Daimon运行的情况下,从项目根目录运行``Docker build-t check\u ezproxy.`

4。现在,您可以运行docker run命令,并在最后使用此工具的标志,即"docker run check_ezproxy--urlsource=libguides`

docker支持仍然相当有限,使用当前的dockerfile您将无法检查kbart文件或使用json配置。



/>通过pip或setup.py安装将使"check_ezproxy"命令在全球范围内可用。建议将其安装到虚拟环境中:


1。不会永久污染shell中的全局命名空间

2。不会污染您的基本python包,因为这个实用程序使用一些流行的库,即使这个工具不一定依赖于某个特定版本,也可能是另一个工具。最好将它们分开。


这对于快速测试或扩展工具是最好的选择。

-创建一个包含必要配置的.json文件,然后用-c参数将工具指向该文件。您可以选择使用-s标志来保存这些配置,这样就不需要再次指向它们,但请注意,这些将覆盖您可能尝试提供的任何其他配置。您需要使用`--flush config``来使用另一个配置。

-您还可以将包用作创建自己实用程序的工具,并在脚本中提供配置。下面的详细信息。

要设置的配置是:

-**ezproxy_prefix**-ezproxy服务器的完整前缀,包括的协议
-**libguides_api_url**-数据库资产的libguides api的完整url,包括站点id、api密钥和资产类型=10作为查询参数(v.1.1只有在这个时候,1.2节很快)
-**ezproxy_error_text**-在您的页面上,一些没有节集的代理链接的文本,您可以相对确定是唯一的。该工具将与此页面文本匹配,以确定哪些链接未正确配置。
-**kb_wskey**-如果要直接从OCLC知识库检查链接,则需要申请API密钥。这里只需要wskey,不需要secret。
-**kb_collections**-要检查的知识库中的集合的名称。如果使用python进行配置,它们可以在元组或列表(或任何iterable)中,如果使用json,它们可以在数组中。即使您只需要检查1,它也需要放在一个iterable包装中。

获取要运行检查的URL。当前可能的选项有"libguides"、"oclc"和"kbart"(必须使用-k提供要检查的
kbart文件的路径)。-k也可以单独使用)。当前支持的检查是"text"和
"link"。

``-t text``将调用通过代理服务器检索页面,并将返回的文本与已知的错误文本进行比较(不能使用
状态码,因为即使对于错误配置的
数据库,状态码也是200)。在Westfield,此文本是"您的EzProxy管理员必须先
,但您需要将机构的比较文本设置为常量中的
错误文本。py```-t links``将只发出head请求
,并检查状态代码。

**-k,--kbart**

kbart文件的路径检查。如果使用此选项,则无需设置--urlsource,尽管这样做很好。路径可以是相对的,
绝对的,或者相对于主目录(~)


**-w,--write**


write输出到文件,而不是打印到标准输出


**-f,--output文件**

``-W。
还需要使用`-w``,但如果您不在此处指定文件,则默认情况下,它将检查主目录中的"check\u proxy.txt"。


**-p,--proxy**

可接受的值是:
-``force`

-``no_proxy``

``force``将导致每个链接都有一个代理前缀,而不管是否'should'(即libguides数据库a-z列表是否将其
设置为不代理)

``no_proxy``将执行相反的操作,并强制t链接没有proxy
前缀,用于检查当
被代理时仍将失效的失效链接(如果链接失效且
被代理,则可能会出现假否定)



**-c,-config file**


使用json配置文件而不是co的python选项之一nfig
文件。arg只取您要使用的.json文件的路径(相对、绝对或相对于home)。



**-s,--save-config**

这个
保存的配置将胜过一切。


**--刷新配置**


刷新任何保存的json配置,并使用python或新的json配置。可以在与
`-c new_json_config.json``.


\example calls

basic call to check link status on the oclc knowledge base collection


``check_ezproxy-u oclc-t link`

call with a json config that we are saving.

``check-ezproxy--config=./config.json-s`


check-set-oclc-knowledge-base collection with an updated config.json(您可以组合标志,但任何带参数的标志都必须是最后一个,并且组合时只能有一个)

``check-ezproxy--flush-con图-sc./config.json`

监禁。命名元组可以这样使用:

``python
from collections import named tuple
record=namedtuple('record','name url')
new_record=record('this_name','http://w w w.example.com')
print(new_record.name)`将输出'this_name'
````

使用接受
的register decorator希望在命令行脚本中调用参数,并使用register import register

@register('get\u links\u here','places')
def get_links_here():
return[list_of_record_named_tuples]
````

将该文件保存到与其余脚本相同的目录中,在check proxy中导入
,并且该文件应自动在
命令行脚本中可用。

r/>
对上面的url源执行相同的操作,除了decorator的第二个参数
应该是'checks',您的函数应该接受一个
数据库参数和一个config参数,运行某种检查,如果一切正常,并且返回一个名为url的对象,
如果出了问题,还有一个新的status属性。

``python
来自registration import register
@register('check-em-good','checks')
def-check-em-good(db):
check(db)
return db
```

les和
(可选)发出拉取请求,将您的支票带到主
存储库中。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Docker&SeleniumJava:无法在Docker容器上运行的chrome浏览器中上载图像/文件   在python中运行java命令   Java垃圾收集器异常行为   java java是否根据底层操作系统执行字节码级优化?   java是否可以休眠自定义查询返回映射而不是列表?   java Spring引导RabbitMQ接收器Jackson反序列化到POJO   apache flex在ActionScript3中创建对象相等“HashMap”作为java HashMap   java如何在Eclipse集成中切换JProfiler启动器   缓存JSP页面结果的java最佳实践?   java集成jaxb绑定文件,使用CXF生成基于WSDL的客户端   java为什么在上传操作结束之前,客户端没有检测到HttpServletResponse的PrintWriter内容?   java在接口内创建类和在类内创建接口有什么用   java向文件写入错误Android Studio   java合并多个RealmList并对结果列表排序?   谷歌API视觉java。lang.NoSuchMethodError   java如何使用逗号分别存储每个值,然后将它们存储到单独的数组中?