这是我第一个广泛使用psycopg2的项目.我试图找到一种方法来提取psql错误消息,无论何时连接尝试失败.我已经测试过,如果所有变量都设置正确,下面的代码就可以工作,但是每当出现错误情况时(例如用户选择不存在的数据库),Python会给我以下内容:
I am unable to connect to the database
None
Traceback (most recent call last):
File "./duplicate_finder.py", line 163, in <module>
main(sys.argv[1:])
File "./duplicate_finder.py", line 142, in main
print e.diag.message_detail
AttributeError: 'OperationalError' object has no attribute 'diag'
Run Code Online (Sandbox Code Playgroud)
是否有一个简单的catch-all方法来捕获psql在连接失败时生成的任何错误消息,或者我是否需要编写除多个psycopg2异常的块之外的其他消息?
从我的脚本中提取:
import sys, getopt, os, time, csv, psycopg2
...
...
conn_string = "host=" + dbhost + " dbname=" + database + " user=" + dbuser + " password=" + dbpass
try:
conn = psycopg2.connect(conn_string)
except psycopg2.Error as e:
print "Unable to connect!" …Run Code Online (Sandbox Code Playgroud) 我几乎讨厌为此提交一个主题,但我自己无法弄清楚。我正在运行 Federoa 17 服务器,并且尝试通过 rsyslog 将 iptables 中丢弃的数据包记录到单独的日志文件中,但它一直将它们发送到 /var/log/messages 。
我的防火墙脚本的片段:
#!/bin/bash
iptables -F
# My accepted rules would be here
iptables -A INPUT -j LOG --log-prefix "iptables: "
iptables -A FORWARD -j LOG --log-prefix "iptables: "
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables-save > /etc/sysconfig/iptables
service iptables restart
iptables -L -v
Run Code Online (Sandbox Code Playgroud)
应该从 iptables 捕获消息的配置文件:
[root@fc17 ]# cat /etc/rsyslog.d/iptables.conf
:msg, startswith, "iptables: " /var/log/iptables.log
& ~
Run Code Online (Sandbox Code Playgroud)
我的 rsyslog.conf 文件中的片段:
#### GLOBAL DIRECTIVES ####
# …Run Code Online (Sandbox Code Playgroud) 请原谅我,如果以前曾经问过这个问题,但我真的想深入了解SSLCipherSuite指令在Apache和其他地方的工作原理.首先,我熟悉密码的四个部分:
密钥交换算法
认证算法
密码编码算法(批量加密)
MAC摘要算法(散列函数)
这是我的Apache盒子的默认SSLCipherSuite:
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
根据我目前的知识和我在网上看到的内容,以下是我读到的内容:
HIGH - 启用使用Triple-DES的所有密码MEDIUM - 启用所有128位加密的密码!aNULL - 禁用空认证,以后不能通过"+"(加号)重新添加到字符串!MD5 - MD5哈希被禁用,以后不能通过"+"(加号)符号重新添加到字符串中
现在我的问题是,别名HIGH,MEDIUM和LOW是指JUST使用的批量加密算法,还是用作整个密码套件(上面列出的所有四个类别)?将它设置为这样会有问题吗?
SSLCipherSuite HIGH
或者是否会产生意想不到的后果,因为对其他三个类别没有限制?如果是这种情况,除了使用MD5作为哈希算法还有什么其他的东西,我应该从密钥交换,身份验证,MAC摘要算法类别中禁用?
谢谢,如果有任何需要澄清或扩展,请告诉我!