SHELL下的数字比较及计算
比较:
方法一: if [ ${A} -lt ${B} ]; then ...
这是最基本的比较方法,使用lt(小于),gt(大于),le(小于等于),ge(大于等于),优点:还没发现;缺点:只能比较整数,使用lt,gt等不直观
方法二: if ((${A} < ${B})) then ...
这是CShell风格比较,优点:不用使用lt,gt等难记的字符串;缺点:还是只能比较整数
方法三: if (echo ${A} ${B} | awk '!($1>$2){exit 1}') then ...
这是使用awk比较,优点:可以比较小数;缺点:表达式太复杂,难记
方法四: if (echo ${A} - ${B} | bc -q | grep -q "^-"); then ...
这是使用bc计算比较,优点:可以比较小数;缺点:表达式更复杂,难记
计算:
方法一:typeset C=$(expr ${A} + ${B});
SHELL中的基本工具,优点:方便检测变量是否为数字;缺点:只能计算整数,且只能计算加减法,不能计算乘除法
方法二:let "C=${A}+${B}"; 或 let "C=A+B"
内嵌命令计算,优点:能计算乘除法及位运算等;缺点:只能计算整数
方法三:typeset C=$((A+B))
CShell风格的计算,优点:能计算乘除法及位运算等,简介,编写方便;缺点:不能计算小数
方法四:typeset C=${echo ${A} ${B} | awk '{print $1+$2}')
使用awk计算,优点:能计算小数,可以实现多种计算方式,计算灵活;缺点:表达式太复杂
方法五:typeset C=${echo ${A} + ${B} | bc -q)
使用awk计算,优点:能计算小数,计算方式比awk还多,计算灵活;缺点:表达式太复杂,小数点后面的位数必须使用scale=N来设置,否则可能会将结果截断为整数
Popularity: 29% [?]
nfs服务器由于毛病重启了,但是客户端挂了好几个,并未重启。这时候导致整个nfs客户端进程异常。umount吧也umount不下去:
streaming01:~# umount /storages/2
umount: /storages/2: device is busy
umount: /storages/2: device is busy
busy个P啊,急死人也。
解决方法:
先找出那些等待这个share的进程,ps axu查看一下,找出STATE是D的进程,然后kill -9 这些进程(实际上根本杀不掉这些东西,就是给个信号过去),然后再kill -9叫做rpciod的进程,这样之后就可以顺利的unmount nfs了。
Popularity: 67% [?]
在网上搜了半天,绝大多数的都被和谐封掉了,搞的连www.yi.org都上不去。
有两个是可以用的,www.itshidden.com。这个测试过了,不错。
另外一个就是证书大户comodo的,http://easy-vpn.comodo.com/download.html,个人使用也是免费的。
大家赶紧下载注册使用把。
Popularity: 53% [?]
需要安装Oracle的RAC,用到了裸设备,4和5的方式是不同的
RHEL4
1: 编辑/etc/sysconfig/rawdevices file
/dev/raw/raw1 /dev/sdf1
2: 重启rawdevice服务,使改动立即生效
$>service rawdevices restart
3: 为裸设备更换属主
$>chown oracle:dba /dev/raw/raw1
RHEL5 / OEL5
1: 修改/etc/udev/rules.d/60-raw.rules或者建立一个新文件,序列号不小于60,如63-oracle-raw.rules
ACTION==”add”, KERNEL==”sdf1″, RUN+=”/bin/raw /dev/raw/raw1 %N”
2: 运行如下命令,使裸设备立即生效
$>/bin/raw /dev/raw/raw1 /dev/sdf1
Over,这样就搞定了。
Popularity: 48% [?]
wget www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh
很简单吧,非常有效,记得把ddos.conf中的
APF_BAN=1改成APF_BAN=0,用iptables 来阻挡IP。
Popularity: 55% [?]
因为PCI-DSS审计的原因,需要在Oracle上面打开Audit功能。
sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Thu Jun 18 09:51:28 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
SQL> show parameter audit
NAME TYPE VALUE
------------------------- ----------- -----------------------
audit_file_dest string /data/SID/trace/adump
audit_sys_operations boolean FALSE
audit_syslog_level string
audit_trail string NONE
1.打开审计
SQL> alter system set audit_sys_operations=TRUE scope=spfile;
SQL> alter system set audit_trail=XML scope=spfile;
2.重启实例
3.SQL> show parameter audit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /data/SID/trace/adump
audit_sys_operations boolean TRUE
audit_syslog_level string
audit_trail string XML
4.检查日志文件
在adump目录下的日志文件里面,可以看到你的操作都记录在案了。
Popularity: 54% [?]
jar文件:/home/resin.jar
需更新包中com/caucho/server/port/Port.class类文件
方法1:
jar uf resin.jar com/caucho/server/port/Port.class
要求是必须知道jar包的结构要非常熟悉,可以使用:jar tf resin.jar来查看。
方法2:
解压resin.jar->覆盖相应类文件->再打包(jar cvf resin.jar com)
Popularity: 56% [?]
数据传输率的单位一般采用MB/s或Mb/s。
在数据传输率上官方数据中(如电信部门)一般采用Mb/s为单位。
而下载软件(如IE、迅雷、快车)一般采用MB/s为单位。
宽带最高下载理论值:
1Mb/s = 1/8=0.125MB/s = 0.125*1024=128KB/s
电信部门说的1M宽带的M是指Mb/s,下载软件时的传输率是MB/S,也就是1M宽带下载速度最快128KB/s,再去掉损耗也就是120KB/s左右。
按这个说法
10M的宽带最快下载速度是1.25MB/s。
100M的宽带最快下载速度是12.5MB/s。
Popularity: 54% [?]
PCI信用卡支付标准中弱点扫描对SSL的加密强度有要求,中级漏洞中是不能使用SSLv2级别的加密,而低级漏洞中直接报告加密强度不够。那么,该如何补救呢?
中级漏洞好补,如果系统是Apache,那就ssl中配置SSLProtocol -ALL +SSLv3 +TLSv。如果是Tomcat,最好前面加个前置Pound,在Pound中设置ssl代理,加密强度Ciphers "HIGH:!SSLv2:!ADH:!aNULL:!eNULL:!NULL"即可。如果是resin,等会说。
低级漏洞,如果是apache,那就SSLCipherSuite HIGH:!SSLv2:!ADH:!aNULL:!eNULL:!NULL即可。
接下来说Resin,可怜的Resin啊,Resin缺省支持两种SSL方式,openssl和jsse-ssl,如果用openssl,可以提高加密强度,但是(重要),但是,这样根本无法应用于生产环境,网站的速度会慢到无法忍受的地步,会被客户大量投诉。没办法,只能使用jsse-ssl,Resinjsse-ssl的配法比较复杂,下面说一下配法:
1. Resin必须是最新的professional的版本3.1.9,貌似3.1.6以上的版本才支持jsse-ssl中Ciphers的配置。
2. Java1.6的配置:
Java1.6必须配置成支持256的高加密强度:下载jce-policy-6.zip和jsse-1_0_3_04-gl.zip,把jsse-1_0_3_04-gl.zip解压出来的jcert.jar jnet.jar jsse.jar放入JAVA_HOME/jre/lib/ext目录下,把jce-policy-6.zip解压出来的local_policy.jar和US_export_policy.jar放入JAVA_HOME/jre/lib/security,替换掉原来的文件。
import java.io.*;
import java.security.*;
import javax.net.ssl.*;
import java.util.regex.*;
public class h {
public static void main(String[] args) {
try {
SSLServerSocket sslSocket;
SSLServerSocketFactory sslSrvFact =
(SSLServerSocketFactory)
SSLServerSocketFactory.getDefault();
sslSocket =(SSLServerSocket)sslSrvFact.createServerSocket(8181);
int port = sslSocket.getLocalPort();
String [] cipherSuites = sslSocket.getEnabledCipherSuites();
for(int i = 0; i < cipherSuites.length; i++){
System.out.println("Cipher Suite " + i +" = " + cipherSuites[i]);
}
sslSocket.close();
} catch (Exception e) {
System.out.println("Exception" + e);
}
}
}
运行结果如果显示256的字样就成功了。
Cipher Suite 0 = SSL_RSA_WITH_RC4_128_MD5
Cipher Suite 1 = SSL_RSA_WITH_RC4_128_SHA
Cipher Suite 2 = TLS_RSA_WITH_AES_128_CBC_SHA
Cipher Suite 3 = TLS_RSA_WITH_AES_256_CBC_SHA
Cipher Suite 4 = TLS_DHE_RSA_WITH_AES_128_CBC_SHA
Cipher Suite 5 = TLS_DHE_RSA_WITH_AES_256_CBC_SHA
Cipher Suite 6 = TLS_DHE_DSS_WITH_AES_128_CBC_SHA
Cipher Suite 7 = TLS_DHE_DSS_WITH_AES_256_CBC_SHA
Cipher Suite 8 = SSL_RSA_WITH_3DES_EDE_CBC_SHA
Cipher Suite 9 = SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
Cipher Suite 10 = SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
Cipher Suite 11 = SSL_RSA_WITH_DES_CBC_SHA
Cipher Suite 12 = SSL_DHE_RSA_WITH_DES_CBC_SHA
Cipher Suite 13 = SSL_DHE_DSS_WITH_DES_CBC_SHA
Cipher Suite 14 = SSL_RSA_EXPORT_WITH_RC4_40_MD5
Cipher Suite 15 = SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
Cipher Suite 16 = SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
Cipher Suite 17 = SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
运行openssl找出高强度加密方式对应的java ciphers
openssl ciphers -v 'HIGH:!SSLv2:!ADH:!aNULL:!eNULL:!NULL'
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-DSS-AES256-SHA SSLv3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1
AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
KRB5-DES-CBC3-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=MD5
KRB5-DES-CBC3-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=3DES(168) Mac=SHA1
EDH-RSA-DES-CBC3-SHA SSLv3 Kx=DH Au=RSA Enc=3DES(168) Mac=SHA1
EDH-DSS-DES-CBC3-SHA SSLv3 Kx=DH Au=DSS Enc=3DES(168) Mac=SHA1
DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
基本匹配的就三个:
TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA
3. Resin3.1.9的配置:
<http port="443">
<jsse-ssl>
<key-store-type>jks</key-store-type>
<key-store-file>mykey.key</key-store-file>
<password>mykey</password>
<cipher-suites>TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA</cipher-suites>
</jsse-ssl>
</http>
OK,这样就解决了,累死也。
Popularity: 71% [?]
Tags: resin, ssl, weak encryption.
数据库的机器突然kernel panic了,导致openldap的数据文件损坏,BDB报错。
Aug 26 11:00:32 db5 slapd[14029]: bdb(dc=chinabank,dc=com): Program version 4.2 doesn't match environment version
Aug 26 11:00:32 db5 slapd[14029]: bdb_db_open: dbenv_open failed: Invalid argument (22)
Aug 26 11:00:32 db5 slapd[14029]: backend_startup: bi_db_open(0) failed! (22)
修复方法:
cd /var/lib/
db_recover -v -h ldap (路径)
或者slapd_db_recover -v -h ldap
ldap的备份与导出:
slapcat > 1.ldif
slapadd < 1.ldif
Popularity: 68% [?]
Tags: ldap.