阿辉的博客

系统 网络 集群 数据库 分布式云计算等 研究

编写js脚本定时删除IIS日志

服务器每天都得产生好几个G的日志文件,一般一周就要清理一次,否则磁盘很容易满。

今天在网上找了一个js脚本可以清理IIS Log,可写在一个文件内用计划任务定时执行。

function dellogfile(beforedays,dirname) {
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var dir = fso.GetFolder(dirname); //改成你的 IIS 日志目录
    var fc = new Enumerator(dir.SubFolders);
    for (;!fc.atEnd(); fc.moveNext()) {
        if (fc.item().name.substr(0,5) == "W3SVC") {
            var logfiles = new Enumerator(fc.item().Files);
            for (;!logfiles.atEnd(); logfiles.moveNext()) {
                var fileName = logfiles.item().name;
                var year = "20" + fileName.substr(2, 2);
                var mouth = fileName.substr(4, 2);
                var day = fileName.substr(6, 2);
                var days = Math.round(((new Date()).getTime() – Date.UTC(year, mouth – 1,day)) / 1000 / 60 / 60 / 24);
                if (days >= beforedays) logfiles.item().Delete();
            }
        }
    }
}

dellogfile(7,"d:iislogs");

在控制台执行时的命令为:

c:>cscript  scriptname.js

pptpd+radius+mysql 安装攻略(part3 mysql部分)

pptpd+radius+mysql  安装攻略(part3 mysql部分)

2006.02.10 by i_amok  

1.需要软件,什么都不需要。

你只要给各mysql的库就好了,库结构在

freeradius源码目录下的/src/modules/rlm_sql/drivers/rlm_sql_mysql/db_mysql.sql

你建立一个数据库就好了,我在我自己的机器上建立了一个名字为radius的数据库

并且导入了这个数据库的结构。

2。配置sql.conf

先回到刚才的freeradius的配置文件目录

CODE:[Copy to clipboard]cd /usr/local/freeradius-1.1.0/etc/raddbvi sql.conf

修改连接信息

CODE:[Copy to clipboard]        # Connect info
        server = "192.168.8.53"
        login = "radius"
        password = "radius"

        # Database table configuration
        radius_db = "radius"去掉下面的simul。。。。前面的#
打开sql的用户同时连接数测试的语句

CODE:[Copy to clipboard]        # Uncomment simul_count_query to enable simultaneous use checking
         simul_count_query = "SELECT COUNT(*) FROM ${acct_table1} WHERE UserName=’%{SQL-User-Name}’ AND AcctStopTime = 0"3.配置radiusd.conf

注释掉 authorize {
的files
去掉sql前的注释

注释掉 preacct {
的files

注释掉 accounting {
的radutmp
去掉sql前面的#

注释掉 session{
的radutmp
去掉sql前面的#

去掉 post-auth {
sql前的#

总之就是去掉files模块,开启sql模块

4。在数据库中添加用户

在usergroup中添加一个test用户,组名为vpn

在radgroupcheck中添加一个vpn组,
attribute为Simultaneous-Use
op为:=
value为1
的纪录

在radcheck中添加
username为test
attribute为 User-Password
op为==
value为test

这样就添加了一个用户为test,组为vpn,密码为test
并且所有的组用户的都只能1个用户名登陆一次

5.测试
用debug模式启动radiusd

会看到

CODE:[Copy to clipboard][root@kdfng raddb]# ../../sbin/radiusd -x
Starting – reading configuration files …
Using deprecated naslist file.  Support for this will go away soon.
Module: Loaded exec
rlm_exec: Wait=yes but no output defined. Did you mean output=none?
Module: Instantiated exec (exec)
Module: Loaded expr
Module: Instantiated expr (expr)
Module: Loaded PAP
Module: Instantiated pap (pap)
Module: Loaded CHAP
Module: Instantiated chap (chap)
Module: Loaded MS-CHAP
Module: Instantiated mschap (mschap)
Module: Loaded eap
rlm_eap: Loaded and initialized type md5
rlm_eap: Loaded and initialized type leap
rlm_eap: Loaded and initialized type gtc
rlm_eap: Loaded and initialized type mschapv2
Module: Instantiated eap (eap)
Module: Loaded preprocess
Module: Instantiated preprocess (preprocess)
Module: Loaded SQL
rlm_sql (sql): Driver rlm_sql_mysql (module rlm_sql_mysql) loaded and linked
rlm_sql (sql): Attempting to connect to radius@192.168.8.53:/radius
rlm_sql (sql): starting 0
rlm_sql (sql): Attempting to connect rlm_sql_mysql #0
rlm_sql_mysql: Starting connect to MySQL server for #0
rlm_sql (sql): Connected new DB handle, #0
rlm_sql (sql): starting 1
rlm_sql (sql): Attempting to connect rlm_sql_mysql #1
rlm_sql_mysql: Starting connect to MySQL server for #1
rlm_sql (sql): Connected new DB handle, #1
rlm_sql (sql): starting 2
rlm_sql (sql): Attempting to connect rlm_sql_mysql #2
rlm_sql_mysql: Starting connect to MySQL server for #2
rlm_sql (sql): Connected new DB handle, #2
rlm_sql (sql): starting 3
rlm_sql (sql): Attempting to connect rlm_sql_mysql #3
rlm_sql_mysql: Starting connect to MySQL server for #3
rlm_sql (sql): Connected new DB handle, #3
rlm_sql (sql): starting 4
rlm_sql (sql): Attempting to connect rlm_sql_mysql #4
rlm_sql_mysql: Starting connect to MySQL server for #4
rlm_sql (sql): Connected new DB handle, #4
Module: Instantiated sql (sql)
Module: Loaded Acct-Unique-Session-Id
Module: Instantiated acct_unique (acct_unique)
Module: Loaded realm
Module: Instantiated realm (suffix)
Module: Loaded detail
Module: Instantiated detail (detail)
Initializing the thread pool…
Listening on authentication *:1812
Listening on accounting *:1813
Ready to process requests.用test用户登陆一下.

会看到

CODE:[Copy to clipboard]rad_recv: Access-Request packet from host 127.0.0.1:32768, id=222, length=146
        Service-Type = Framed-User
        Framed-Protocol = PPP
        User-Name = "test"
        MS-CHAP-Challenge = 0xb6a9e94b94c3c386875043efd5144e17
        MS-CHAP2-Response = 0x38006d78036bb5e40ddeca0ce96b944619e000000000000000007b887b8762be38eb111a94a4b581925b85e07453a38a070f
        Calling-Station-Id = "192.168.8.53"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
rlm_sql (sql): Reserving sql socket id: 4
rlm_sql (sql): Released sql socket id: 4
rlm_sql (sql): Reserving sql socket id: 3
rlm_sql (sql): Released sql socket id: 3
rlm_sql (sql): Processing sql_postauth
rlm_sql (sql): Reserving sql socket id: 2
rlm_sql (sql): Released sql socket id: 2
Sending Access-Accept of id 222 to 127.0.0.1 port 32768
        MS-CHAP2-Success = 0x38533d33453434464142394232444230413143464539453832444536453534373331383833454238414536
        MS-MPPE-Recv-Key = 0x53a3812a0fd5b6f7b1cf4f6f6796f26b
        MS-MPPE-Send-Key = 0xb8be60559cbc46fd4da277516d6584f3
        MS-MPPE-Encryption-Policy = 0x00000002
        MS-MPPE-Encryption-Types = 0x00000004
rad_recv: Accounting-Request packet from host 127.0.0.1:32768, id=223, length=110
        Acct-Session-Id = "43EC0822056A00"
        User-Name = "test"
        Acct-Status-Type = Start
        Service-Type = Framed-User
        Framed-Protocol = PPP
        Calling-Station-Id = "192.168.8.53"
        Acct-Authentic = RADIUS
        NAS-Port-Type = Async
        Framed-IP-Address = 10.10.110.1
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
        Acct-Delay-Time = 0
rlm_sql (sql): Reserving sql socket id: 1
rlm_sql (sql): Released sql socket id: 1
Sending Accounting-Response of id 223 to 127.0.0.1 port 32768如果你把Simultaneous-Use改成0

会看到

CODE:[Copy to clipboard]rad_recv: Access-Request packet from host 127.0.0.1:32768, id=225, length=146
        Service-Type = Framed-User
        Framed-Protocol = PPP
        User-Name = "test"
        MS-CHAP-Challenge = 0x2295d4d65913cbc0a7836e986fe4a998
        MS-CHAP2-Response = 0x34001739a3331c1a1a938eed99cda89b691f0000000000000000a8a9e9ae2eadaa6b1acb93e368113dc4ed47dac0a20b1ed8
        Calling-Station-Id = "192.168.8.53"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
rlm_sql (sql): Reserving sql socket id: 4
rlm_sql (sql): Released sql socket id: 4
rlm_sql (sql): Reserving sql socket id: 3
rlm_sql (sql): Released sql socket id: 3
rad_recv: Access-Request packet from host 127.0.0.1:32768, id=225, length=146
Sending Access-Reject of id 225 to 127.0.0.1 port 32768
        Reply-Message := "rnYou are already logged in – access deniedrnn"提示已经登陆过了,可见那个选项时生效的.

另,我找一个会俄语的,帮我看看

FreeNIBS

FreeNIBS is a loadable plugin for the FreeRADIUSradius server. FreeNIBS provides authorization,authentication, and accounting for dial-in(PPP/PPPOE/PPTP) users. It can be used forreal-time prepaid and postpaid billing. FreeNIBScan bill users based on service accuration, time,traffic, and both time and traffic. FreeNIBS hasvery flexible settings for groups, users, andprices. All data is stored in SQL databases suchas MySQl, PgSQL, and Oracle.

这个东西只有俄文的手册,死活看不来.连配置文件都是俄文的……

如果加上这个就能实现时间和流量的限制.

pptpd+radius+mysql 安装攻略(part2 radius部分)

pptpd+radius+mysql  安装攻略(part2 radius部分)

2006.02.10 by i_amok  

1。需要软件

freeradius

原先pppd源码目录中的一些关于radius外挂模块的配置文件。

2。安装freeradius的前期准备

安装mysql-devel.i386

yum install mysql-devel.i386

3。安装freeradius

http://www.freeradius.org

下载源码,我测试的时候是用 freeradius-1.1.0

用指定安装目录的方法安装

CODE:[Copy to clipboard]./configure –prefix=/usr/local/freeradius-1.1.0
make
make install4。配置pppd支持radius

4.1拷贝文件

从pppd的源码目录把下面这个目录复制到/etc/radiusclient/

CODE:[Copy to clipboard]cp -R ppp-2.4.4b1/pppd/plugins/radius/etc  /etc/radiusclient/4.2修改options.pptpd中的配置

在/etc/ppp/options.pptpd

中加入

CODE:[Copy to clipboard]
plugin /usr/local/lib/pppd/2.4.4b1/radius.so4.3 配置 /etc/radiusclient中的servers和radiusclient.conf

在servers中,你需要增加一个radiusd的地址和密码

CODE:[Copy to clipboard][root@kdfng radiusclient]# cat servers
#Server Name or Client/Server pair              Key
#—————-                               —————
#portmaster.elemental.net                       hardlyasecret
#portmaster2.elemental.net                      donttellanyone
localhost       netdragon这里localhost表示你的radiusd就在本机,并且访问的密码是netdragon

radiusclient.conf中

CODE:[Copy to clipboard]# service. if this fails also a compiled in default is used.
authserver      localhost:1812

# RADIUS server to use for accouting requests. All that I
# said for authserver applies, too.
#
acctserver      localhost:1813确认上面也是本地的,默认就是本地,所以一般不需要修改。
同时确保这个文件中radiusclient相关的路径所有的路径都是 /etc/radiusclient 开头的。

5。配置freeradius

cd /usr/local/freeradius-1.1.0/etc/raddb

raddb这个目录就是所有的freeradius配置文件所在了

5.1 修改clients.conf

这里说明一下,所有的nas都是radiusd的client,nas就是那个pptpd,所以这个文件就是配置pptpd的登陆权限的。

CODE:[Copy to clipboard]client 127.0.0.1      {
                        secret = netdragon
                        shortname = iamok
                        nastype     = other
                        }修改127.0.0.1部分为上面的样子。secret就是我们刚才在/etc/radiusclient中servers里设置的那个。这两个要一致

5.2 在users文件的最上面加入一个用户

CODE:[Copy to clipboard]ww Auth-Type:= MS-CHAP, User-Password=="ww", Simultaneous-Use:=1
          Service-Type = Framed-User,
          Framed-Protocol = PPP,
          Framed-IP-Address = 255.255.255.254,
          Framed-IP-Netmask = 255.255.255.0说明一下 ww是用户名
auth-type是验证的类型
第二个ww是密码
Simultaneous-Use是允许这个用户名同时登陆的个数

所有这些都是check属性,要写在第一行
然后第二行开始用tab开头,是服务器返回给radius客户端的(也就是返回给pptpd)时reply属性。
其中ip地址设置为255.255.255.254表示ip地址的分配是由radius客户端决定的,也就是由pptpd决定。
最后一个是子网掩码。

5.3用debug模式运行radiusd

CODE:[Copy to clipboard]../../sbin/radiusd -x你会看到

CODE:[Copy to clipboard]Starting – reading configuration files …
Using deprecated naslist file.  Support for this will go away soon.
Module: Loaded exec
rlm_exec: Wait=yes but no output defined. Did you mean output=none?
Module: Instantiated exec (exec)
Module: Loaded expr
Module: Instantiated expr (expr)
Module: Loaded PAP
Module: Instantiated pap (pap)
Module: Loaded CHAP
Module: Instantiated chap (chap)
Module: Loaded MS-CHAP
Module: Instantiated mschap (mschap)
Module: Loaded eap
rlm_eap: Loaded and initialized type md5
rlm_eap: Loaded and initialized type leap
rlm_eap: Loaded and initialized type gtc
rlm_eap: Loaded and initialized type mschapv2
Module: Instantiated eap (eap)
Module: Loaded preprocess
Module: Instantiated preprocess (preprocess)
Module: Loaded files
Module: Instantiated files (files)
Module: Loaded Acct-Unique-Session-Id
Module: Instantiated acct_unique (acct_unique)
Module: Loaded realm
Module: Instantiated realm (suffix)
Module: Loaded detail
Module: Instantiated detail (detail)
Module: Loaded radutmp
Module: Instantiated radutmp (radutmp)
Initializing the thread pool…
Listening on authentication *:1812
Listening on accounting *:1813
Ready to process requests.6。测试

建立一个新的vpn连接

用户名ww密码ww

然后拨号

成功的话,会看到。

CODE:[Copy to clipboard]rad_recv: Access-Request packet from host 127.0.0.1:32768, id=214, length=144
        Service-Type = Framed-User
        Framed-Protocol = PPP
        User-Name = "ww"
        MS-CHAP-Challenge = 0x729e2492953298b498a766e778defe74
        MS-CHAP2-Response = 0xfc00475dd294431a52ee1187d13127c3bf49000000000000000043aad8bb5cd6f5ece16ddae9d20c63d857836053b2197144
        Calling-Station-Id = "192.168.8.53"
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
Sending Access-Accept of id 214 to 127.0.0.1 port 32768
        Service-Type = Framed-User
        Framed-Protocol = PPP
        Framed-IP-Address = 255.255.255.254
        Framed-IP-Netmask = 255.255.255.0
        MS-CHAP2-Success = 0xfc533d31303637323037453037384244433138333441303536434337433044373046363942414446343039
        MS-MPPE-Recv-Key = 0x0211fcb6f599479e8ee0a7d8a16a3252
        MS-MPPE-Send-Key = 0x91242cedc84a2dc69355c56951119065
        MS-MPPE-Encryption-Policy = 0x00000002
        MS-MPPE-Encryption-Types = 0x00000004
rad_recv: Accounting-Request packet from host 127.0.0.1:32768, id=215, length=108
        Acct-Session-Id = "43EBFF39048300"
        User-Name = "ww"
        Acct-Status-Type = Start
        Service-Type = Framed-User
        Framed-Protocol = PPP
        Calling-Station-Id = "192.168.8.53"
        Acct-Authentic = RADIUS
        NAS-Port-Type = Async
        Framed-IP-Address = 10.10.110.1
        NAS-IP-Address = 127.0.0.1
        NAS-Port = 0
        Acct-Delay-Time = 0
Sending Accounting-Response of id 215 to 127.0.0.1 port 32768这样pptp+radius的部分就完成了,下面一部分是对radiusd增加mysql的支持

用ctrl+c退出radius

pptpd+radius+mysql 安装攻略(part1 pptpd部分)

1.你所需要的软件 
内核最好能升级到2.6
如果你是centos的用户,可以通过yum update来升级到最新的centos4.2
升级内核是为了待会安装一个内核模块增加对mppe的支持。这样才能支持pptp拨号。

pppd    ppp拨号服务器
pptpd   在pppd拨号的基础上增加pptpd的支持
freeradius   作拨号用户验证的。
mysql        增加freeradius的数据库支持

2。确定你的内核是否支持mppe

modprobe ppp-compress-18 && echo ok

如果显示ok,那么恭喜,你的内核已经具备了mppe支持。请到第4部分

3。升级内核支持mppe

http://sourceforge.net/project/showfiles.php?group_id=44827

到上面这个网址。下载2个rpm包。

dkms-2.0.6-1.noarch.rpm 
kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm 

dkms是一个新的软件,能让你在不编译内核的基础上,外挂一些内核的模块。
kernel_ppp_mppe就是mppe支持的内核模块了。

ok后重起你的系统。

4。安装pppd

http://www.samba.org/ppp

在上面的网址下载最新的ppp软件包,我测试的时候是 ppp-2.4.4b1
用最常规的方法,configure,make,make install
由于新版的没有复制范例配置文件,需要用 make install-etcppp 来安装范例配置文件

5。安装pptpd

http://poptop.sourceforge.net/

在上面的网址下载最新的pptpd包,我测试的时候是pptpd-1.2.3

也是最常规的方法 configure,make,make install

6。配置你的pppd和pptpd

pppd的默认配置文件在 /etc/ppp

pptpd的配置文件在 /etc/pptpd.conf

pptpd和pppd的关系好比 pptpd是pppd的外挂一样。

6.1 
/etc/pptpd.conf中需要配置的地方只有几个

你首先要确定下面这个

ppp  /usr/local/sbin/pppd

他给pptpd指名了pppd的所在

option /etc/ppp/options.pptpd

这个说明了pptpd在ppp下的配置文件

localip 192.168.8.22
remoteip 10.10.110.1-100

localip是pptpd的对外服务的ip,也就是客户端需要拨号的ip
remoteip是拨号服务器分配给拨号用户的ip ,可以用-表示ip范围

6.2
 配置/etc/ppp/options.pptpd

为了测试,请打开debug和dump

# Logging

# Enable connection debugging facilities.
# (see your syslog configuration for where pppd sends to)
debug

# Print out all the option values which have been set.
# (often requested by mailing list to verify options)
dump

默认的信息会写在/var/log/messages

6.3
编辑 /etc/ppp/chap-secrets

添加一个测试用户

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
"iamok" pptpd   "iamok" *

第一个iamok是用户,第二个iamok是密码 ,*表示任意ip
pptpd表示和/etc/ppp/options.pptpd中的name 部分的pptpd要匹配,一般不用修改,我们只是
测试以下pptpd是否正常。

7。测试你的pptpd

如果是默认安装,你在任意路径打pptpd就可以了。

如果成功,你就会在 
/var/log/messages里面看到

Feb 10 09:51:46 kdfng pptpd[926]: MGR: Manager process started
Feb 10 09:51:46 kdfng pptpd[926]: MGR: Maximum of 100 connections available

然后你可以在任意一个win2k系统上建立一个vpn连接,用pptp方式的,用户名用上面设置的,这样你就能拨号了
而且ip就是你在上面所设置的ip

现在复查以下log文件

Feb 10 09:54:53 kdfng pptpd[937]: MGR: Manager process started
Feb 10 09:54:53 kdfng pptpd[937]: MGR: Maximum of 100 connections available
Feb 10 09:55:06 kdfng pptpd[939]: CTRL: Client 192.168.8.53 control connection started
Feb 10 09:55:06 kdfng pptpd[939]: CTRL: Starting call (launching pppd, opening GRE)
Feb 10 09:55:06 kdfng pppd[940]: pppd options in effect:
Feb 10 09:55:06 kdfng pppd[940]: debug          # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: nologfd                # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: dump           # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: require-mschap-v2              # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: refuse-pap             # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: refuse-chap            # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: refuse-mschap          # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: name pptpd             # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: 115200         # (from command line)
Feb 10 09:55:06 kdfng pppd[940]: lock           # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: local          # (from command line)
Feb 10 09:55:06 kdfng pppd[940]: ipparam 192.168.8.53           # (from command line)
Feb 10 09:55:06 kdfng pppd[940]: 192.168.8.22:10.10.110.1               # (from command line)
Feb 10 09:55:06 kdfng pppd[940]: nobsdcomp              # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: require-mppe-128               # (from /etc/ppp/options.pptpd)
Feb 10 09:55:06 kdfng pppd[940]: pppd 2.4.4b1 started by root, uid 0
Feb 10 09:55:06 kdfng pppd[940]: Using interface ppp0
Feb 10 09:55:06 kdfng pppd[940]: Connect: ppp0 <–> /dev/pts/1
Feb 10 09:55:06 kdfng pptpd[939]: CTRL: Ignored a SET LINK INFO packet with real ACCMs!
Feb 10 09:55:06 kdfng pppd[940]: MPPE 128-bit stateless compression enabled
Feb 10 09:55:08 kdfng pppd[940]: local  IP address 192.168.8.22
Feb 10 09:55:08 kdfng pppd[940]: remote IP address 10.10.110.1
Feb 10 09:55:17 kdfng pppd[940]: LCP terminated by peer (^Z^HEO^@<M-Mt^@^@^@^@)
Feb 10 09:55:17 kdfng pppd[940]: Connect time 0.2 minutes.
Feb 10 09:55:17 kdfng pppd[940]: Sent 0 bytes, received 3492 bytes.
Feb 10 09:55:17 kdfng pppd[940]: Modem hangup
Feb 10 09:55:17 kdfng pppd[940]: Connection terminated.
Feb 10 09:55:17 kdfng pppd[940]: Exit.
Feb 10 09:55:17 kdfng pptpd[939]: CTRL: Client 192.168.8.53 control connection finished

这样你的pptpd就配置完成了。

flv文件转制和截图

flv文件的转制和截图相信有很多人已经研究的很多了,我在去年的时候也查找了不少这方面的信息,现在拿出来共享.

flv的转制目前比较好的就是ffmpeg和mencoder了,但ffmpeg支持的格式相对较少,而且有些转制出来有问题.因此主要的转制人物就

落在mencoder身上了,但mencoder转制出来的flv也不尽如人意,花屏的现象也算是比较严重了,可是也没有更好的转制方案,mencoder

也一直没有更新,对视频清晰度要求不是太高的可以考虑使用.

mencoder转制:

mencoder NOW.wmv -ffourcc FLV1 -of lavf -ovc lavc -lavcopts vcodec=flv:acodec=mp3:vbitrate=240:abitrate=56 -srate 22050 -oac mp3lame -ofps 18 -o NOW.flv

NOW.wmv : 转制的源文件及地址

-ffourcc FLV1 -of lavf -ovc lavc -lavcopts vcodec=flv:acodec=mp3:abitrate=56 :转制格式编码以及声音编码

-srate 22050: 声音采样率,22050hz

-o NOW.flv 输出文件及地址

下面是大概的转制速度:
rm 速度:300k/s
rmvb 速度:1000k/s
wmv 速度:1000k/s
avi 速度:1000k/s
mov 速度:300k/s
mp4 速度:700k/s

如果转rm格式的,需要安装w32codec-all-20050412-0.pm.0.i386.rpm

ffmpeg转制:

asf: ffmpeg -i a.asf -ab 56 -ar 22050 -b 500 -r 15 -s 320×240 asf.flv 速度:600k/s

wmv: 支持wmv8以下版本

抓图:

使用ffmpeg可以很方便的抓图:
jpg: ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352×240 -ss a.jpg //注意-ss就是要提取视频文件中指定时间的图像
jpg: ffmpeg -i asf.flv -y -f image2 -t 1 asf.jpg
gif: ffmpeg -i test.asf -vframes 30 -y -f gif a.gif

http://www.roading.net/blog/article.asp?id=114

资产负债表:什么是股本?

资产负债表:什么是股本?
财务部 赵徽生 2003-12-16 07:44

上市公司与其他公司比较,最显著的特点就是将上市公司的全部资本划分为等额股份,并通过发行股票的方式来筹集资本。股东以其所认购股份对公司承担 有限责任。股份是很重要的指标。股票的面值与股份总数的乘积为股本,股本应等于公司的注册资本,所以,股本也是很重要的指标。为了直观地反映这一指标,在 会计核算上股份公司应设置"股本"科目。

公司的股本应在核定的股本总额范围内,发行股票取得。但值得注意的是,公司发行股票取得的收入与股本总额往往不一致,公司发行股票取得的收入大于 股本总额的,称为溢价发行;小于股本总额的,称为折价发行;等于股本总额的,为面值发行。我国不允许公司折价发行股票。在采用溢价发行股票的情况下,公司 应将相当于股票面值的部分记入"股本"科目,其余部分在扣除发行手续费、佣金等发行费用后记入"资本公积"科目。

什么是股东权益?

股东权益又称净资产,是指公司总资产中扣除负债所余下的部分。

例如.“上海汽车”1997年年底的资产负债表上,总资产为40.56亿元,负债是7.42亿元,股东权益就为两者之差。即33.14亿元,这也是“上海汽车”的净资产。

股东权益是一个很重要的财务指标,它反映了公司的自有资本。当总资产小于负债金额,公司就陷入了资不抵债的境地,这时,公司的股东权益便消失殆尽。如果实施破产清算,股东将一无所得。相反,股东权益金额越大,这家公司的实力就越雄厚。

股东权益包括以下五部分:一是股本,即按照面值计算的股本金。二是资本公积。包括股票发行溢价、法定财产重估增值、接受捐赠资产价值。三是盈余公 积,又分为法定盈余公积和任意盈余公积。法定盈余公积按公司税后利润的10%强制提取。目的是为了应付经营风险。当法定盈余公积累计额已达注册资本的 50%时可不再提取。四是法定公益金,按税后利润的5%一10%提取。用于公司福利设施支出。五是未分配利润,指公司留待以后年度分配的利润或待分配利 润。
参考资料:昆仑证券

什么是每股净资产?

每股净资产
——每股净资产是指股东权益与股本总额的比率。其计算公式为: 每股净资产= 股东权益÷股本总额。这一指标反映每股股票所拥有的资产现值。每股净资产越高, 股东拥有的资产现值越多;每股净资产越少, 股东拥有的资产现值越少。通常每股净资产越高越好。

公司净资产代表公司本身拥有的财产,也是股东们在公司中的权益。因此,又叫作股东权益。在会计计算上,相当于资产负债表中的总资产减去全部债务后 的余额。公司净资产除以发行总股数,即得到每股净资产。例如,上述公司净资产为15亿元,它的每股净资产值为1.5元(即15亿元/10亿股)。

每股净资产值反映了每股股票代表的公司净资产价值,是支撑股票市场价格的重要基础。每股净资产值越大,表明公司每股股票代表的财富越雄厚,通常创造利润的能力和抵御外来因素影响的能力越强。

市盈率是什么意思?

市盈率又称股份收益比率或本益比,是股票市价与其每股收益的比值,计算公式是:

市盈率:当前每股市场价格/每股税后利润

市盈率是衡量股价高低和企业盈利能力的一个重要指标。由于市盈率把股价和企业盈利能力结合起来,其水平高低更真实地反映了股票价格的高低。例如, 股价同为50元的两只股票,其每股收益分别为5元和1元,则其市盈率分别是10倍和50倍,也就是说具当前的实际价格水平相差5倍。若企业盈利能力不变, 这说明投资者以同样50元价格购买的两种股票,要分别在10年和50年以后才能从企业盈利中收回投资。但是,由于企业的盈利能力是会不断改变的,投资者购 买股票更看重企业的未来。因此,一些发展前景很好的公司即使当前的市盈率较高,投资者也愿意去购买。预期的利润增长率高的公司,其股票的市盈率也会比较 高。例如,对两家上年每股盈利同为1元的公司来讲,如果A公司今后每年保持20%的利润增长率,B公司每年只能保持10%的增长率,那么到第十年时A公司 的每股盈利将达到6.2元,B公司只有2.6元,因此A公司当前的市盈率必然应当高于B公司。投资者若以同样价格购买这家公司股票,对A公司的投资能更早 地收回。

为了反映不同市场或者不同行业股票的价格水平,也可以计算出每个市场的整体市盈率或者不同行业上市公司的平均市盈率。具体计算方法是用全部上市公司的市价总值除以全部上市公司的税后利润总额,即可得出这些上市公司的平均市盈率。

影响一个市场整体市盈率水平的因素很多,最主要的有两个,即该市场所处地区的经济发展潜力和市场利率水平。一般而言新兴证券市场中的上市公司普遍 有较好的发展潜力,利润增长率比较高,因此,新兴证券市场的整体市盈率水平会比成熟证券市场的市盈率水平高。欧美等发达国家股市的市盈率一般保持在 15~20倍左右。而亚洲一些发展中国家的股市正常情况下的市盈率在30倍左右。另一方面,市盈率的倒数相当于股市投资的预期利润率。因此,由于社会资金 追求平均利润率的作用,一国证券市场的合理市盈率水平还与其市场利率水平有倒数关系。

市盈率是分析证券市场的一个重要指标。但由于该指标简单直观,非常不全面,使用不当容易引起误解,从而影响对证券市场的正确认识。有鉴于此,本文对市盈率及与此相关的股市泡沫问题作一分析。

一、 正确认识中国A股市场平均市盈率问题
1. 平均市盈率的标准计算方法
股票时常的平均市盈率(Average P/E ratio),是指股票市场某个有代表性的股价指数的平均市盈率,平均市盈率要与股价指数相对应,如标准普尔500指数的平均市盈率(简称标准普尔500 指数市盈率,下同)、日经225股价指数市盈率、道琼斯股价平均市盈率、上证A股指数市盈率,等等,不能含混地说某某市场的平均市盈率。
某指数的市盈率就是某指数的成份股(剔除亏损股,因为亏损股的市盈率没有意义)的总市值(发行在外普通股股数×收盘价)除以净利润总额。
具体到上证A股指数市盈率,是指上证A股指数的样本股(包括ST股,不包括PT股,截止20002年1月9日为627只),剔除其中的亏损股,他 们的总市值与净利润总额的商。上证30指数的市盈率,是指上证30指数的30个样本股,剔除其中的亏损股,它们的总市值与净利润总额的商。(上海证券交易 所信息中心,2002)
2. 不同市场平均市盈率横向比较时应注意的几个问题
市盈率是一个非常粗略的指标,考虑到可比性,对同一指数不同阶段的市盈率进行比较较有意义,而对不同市场的市盈率进行横向比较时应特别小心。
(1) 综合指数的市盈率与综合指数的市盈率比,成份指数的市盈率与成份指数的市盈率比。综合指数的样本股包括了市场上的所有股票(沪深市场上PT股除外),市盈 率一般比较高,而成份指数的样本股是精挑细选的,通常平均股本较大、平均业绩较好,所以其市盈率比较低一些。而我们经常看到的国外股票时常的市盈率大多是 成份指数的市盈率,如果将它们与我们综合指数的市盈率相比较,则犯了概念性错误。
(2) 市盈率应与基准利率挂钩。基准利率是人们投资收益率的参照系数,也反映了整个社会资金成本的高低。一般来说,如果其他因素不变,基准利率的倒数与股市平均 市盈率存在正向关系。如果基本利率低,合理的市盈率可以高一点,如果基准利率很高,合理的市盈率就应该低一些。目前我国央行再贴现率为2.97%,一年期 储蓄存款收益率为1.80%,美国联邦基金利率为1.75%,美联储再贴出率为1.25%,中美基准利率差别不大,但纵向看,中国目前的基准利率是很低 的。另据权威部门研究显示,根据我国目前物价水平及国家未来积极财政政策和适度货币政策取向,中国存在再次调低利率的可能。
(3) 市盈率应与股本挂钩。平均市盈率与总股本和流通股本都有关,总股本和流通股本越小,平均市盈率就会越高(思腾思特管理咨询中国公司,2001),反之,就 会越低,中西莫不如此。据统计,2001年10月16日中国沪深市场770只样本股(剔除了PT股、ST股、亏损股和2001年中期每股收益低于0.05 元股票)算术平均市盈率为29.43倍,其中,总股本最小的100家上市公司算术平均市盈率为42.74倍,而总股本最大的100家上市公司算术平均市盈 率只有19.82倍,前者是后者的2.16倍。在美国,小盘股的平均市盈率也高于大盘股平均市盈率的好几倍,NASDAQ市场市盈率高于纽约证券交易所市 盈率,部分地与股本因素有关。
因此,看一个市场平均市盈率水平,还应考虑到这个市场的上市公司结构,如果是以小股本公司为主的市场,它的合理市盈率就应高一些。如果不考虑 股票市场上市公司的股本构成,就不能解释为什么即使原有上市公司价格水平不变,只要上一个中石化,若再上中石油、中移动、中海油,就会把平均市盈率降下十 几倍,就会把市盈率降到所谓的“合理区域”。事实上,2001年12月 31日上证A股指数市盈率降为37.59倍,如果中石化尚未上市,这一数字将戏剧性地升为43.31倍。
(4) 市盈率应与股本结构挂钩。市盈率跟股本结构也有关系。如果股份是全流通的,市盈率就会低一些,如果股份不是全流通的,那么流通股的市盈率就会高一些。原因 在于,如果上市公司的总价值不变,股份分成流通股和非流通股,而资产的流动性会增加资产的价值(流动性溢价),从一般意义上说,流通股的每股价格自然要高 于非流通股的价格,非流通股的价格越低,流通股的价格就越高,其结果就必然是流通股的平均市盈率高于非流通股的平均市盈率。流通股在中股本中所占的比例越 小,流通股与非流通股价格差异越大,流通股的平均市盈率就越高。
目前的中国市场,非流通股占到总股本的三分之二,在它们没有流通的情况下,流通股的市盈率较高,也是正常的。
(5) 市盈率应与成长性挂钩。同样是20倍市盈率,上市公司平均每年利润增长7%的市场就要远比上市公司平均每年利润增长3%的市场有投资价值。根据经典的股票 内在价值评估模型,如式(1)所示。其中V为股票内在价值,D。为在未来无限时期支付的每股股利,k为到期收益率,g为股利每期固定的增长率。从式(1) 可以看出,假定其他因素不变,成长性对股票的内在价值,从而对市场价格和平均市盈率影响巨大。
V= D。(l+g)
K – g (1)
举个简化的例子,假设上市公司净利润与经济同步增长,中国年均 经济增长率7%,,美国年均经济增长率为3%,那么中国股票的平均内在价值就是美国的2.42倍,中国股市的合理市盈率也是美国的2.42倍。从成长性这 个角度看,NASDAQ指数的市盈率比较高,新兴市场国家股市的平均市盈率比较高,都是有道理的。
(6) 市盈率与一些制度性因素有关,居民投资方式的可选择性、投资理念、一国制度(文化、传统、风俗、习惯等)、外汇管制等制度性因素,都与平均市盈率水平有关。
(7) 中国股票市场的平均市盈率还应考虑发行价因素。1997年以前,参照当时中国的利率水平,管理层对股票初次发行定价控制得比较严,一般初次发行市盈率不得 超过15倍,为了照顾边远地区,像西藏金珠这样的股票才发到20倍左右的市盈率。后来为了推进证券市场的市场化改革,对发行定价的控制渐渐放松了,闽东电 力2000年发行时达到了88倍的市盈率,一般股票的平均发行市盈率也维持在四五十倍的水平。发行市盈率四五十倍都可以,二级市场平均市盈率四五十倍怎能 说不正常?从理论上说,发行市盈率越高,筹集的资金越多,上市公司潜在的发展、盈利能力就越强,上市公司帐面资产的含金量也就越高,而这一点从静态的市盈 率指标中是看不出来的。既然静态市盈率指标中没有充分反映近年来发行市盈率较高的影响,那么目前二级市场平均市盈率比以前年份稍高一些也是正常的。
3 . 平均市盈率指标评判股票市场投资价值的缺陷
平均市盈率指标用来衡量股市平均价格是否合理具有一些内在的不足:
(1) 计算方法本身的缺陷。成份股指数样本股的选择具有随意性。各国各市场计算的平均市盈率与其选取的样本股有关,样本调整一下,平均市盈率也跟着变动。即使是 综合指数,也存在亏损股与微利股对市盈率的影响不连续的问题。举个例子,2001年12月31日上证A股的市盈率是37.59倍,如果中石化2000年度 不是盈利161.54亿元,而是0.01元,上证A股的市盈率将升为48.53倍。更有讽刺意味的是,如果中石化亏损,它将在计算市盈率时被剔除出去,上 证A股的市盈率反而降为43.31倍,真所谓“越是亏损市盈率越低”。
(2) 市盈率指标很不稳定。随着经济的周期性波动,上市公司每股收益会大起大落,这样算出的平均市盈率也大起大落,以此来调控股市,必然会带来股市的动荡。 1932年美国股市最低迷的时候,市盈率却高达100多倍,如果据此来挤股市泡沫,那是非常荒唐和危险的,事实上当年是美国历史上百年难遇的最佳入市时 机。
(3) 每股收益只是股票投资价值的一个影响因素。投资者选择股票,不一定要看市盈率,你很难根据市盈率进行套利,也很难根据市盈率说某某股票有投资价值或没有投 资价值。令人费解的是,市盈率对个股价值的解释力如此之差,却被用作衡量股票市场是否有投资价值的最主要的依据。实际上股票的价值或价格是由众多因素决定 的,用市盈率一个指标来评判股票价格过高或过低是很不科学的。

二、 目前中国股市存在泡沫吗
1. 衡量股市泡沫的指标
除了平均市盈率外,衡量一个股市整体是否存在泡沫或是具有投资价值,还有如下指标。
(1) 红利支撑股价水平。有人举香港上市的汇丰控股和长江实业的例子,认为没有泡沫的股票价格是由上市公司的分红、净资产支撑的。然而这种情况在世界各国股市中只是特例,特大型公司的股票,成长性较差,炒作困难,分红或每股净资产确定了它的大致价格下限。
(2) 平均股价。2001年6月14日沪深市场(剔除了PT股)1089只A股平均价格16.91元,至2002年1月10日,沪深市场1121只A股平均价格 为11.51元,有研究人员撰文认为,股票平均价格可以评估市场的投资价值或风险水平。平均股价在15元以上,风险很大,平均股价在10元以下,风险较 小。这种经验规律是有一定道理的,但平均股价指标的缺陷仍然存在,价格高低不能作为股票投资决策的主要依据;送股、转增股、配股、股票拆细时平均股价发生 跳跃,但股票的内在价值没有相应变化;平均股价没有考虑实质经济,经济繁荣与经济萧条时,合理的平均股价水平自然不应相同。
(3) 平均市销率。西方有些学者(肯尼斯.L.费希尔,1984)就提出市销率(PSR,price sales ratio)的概念,即每股市场价格除以每股销售收入。由于销售收入的波动性要比净利润的波动性小得多,所以市销率比较稳定。而且,一股上市公司的销售收 入都是正的,所以计算平均市销率时,几乎不需要剔除上市公司,可以将所有上市公司作为样本,保证了计算的客观性。费希尔对美国股市一百多年数据的检验表 明,根据市销率判断个股和大盘,投资效果比市盈率好。在费希尔看来,用市盈率定价是很不科学的,“市盈率10倍太高,1000倍却太低”。([ 美]肯尼斯.L.费希尔,2000)
(4) 平均市净率(托宾q).与费希尔不同,美国经济学家安德鲁.史密瑟斯等(Andrew Smithers etc.,2001)偏爱平均市净率指标,也叫托宾q指标(q ratio)。史密瑟斯认为,q值就像弹簧,将股市拉向它的内在价值位置。他还认为,q值和平均市盈率指标大多数时候朝着相同的方向运动,但平均市盈率偶 尔会给出灾难性的价值数据。有一个事例显示了托宾q的威力,2000年初史密瑟斯等出版的《华尔街价值投资》一书根据托宾q建议人们要抛空股票。
(5) 市场成本。市场成本(AMC®,Average Market Cost), 也叫平均持筹成本,是指剔除非理性交易后,市场上所有投资者持有某只股票的平均成本。在信息对称的情况下,市场成本在数值上恰好等于股票的内在价值。
用市场成本指标来衡量股市的投资价值,几乎具有以上几个指标的所有优点而没有它们的不足。市场成本可以在相当程度上衡量个股的投资价值,如果市价远高于市场成本,这种股票跳水只是迟早的事,反之,这种股票则值得关注。
市场成本具有广泛的适应性,对不同时期的同一市场或不同的市场,都具有解释力。NASDAQ指数涨得太高,就必然会跌回它的平均成本位置(这是资 金堆积的地方),但到了平均成本线上就会获得较强的支撑,并不因为它的市盈率水平是100多倍(参见附表)而还含有多少泡沫。目前上证指数的市场成本为 1509.258点,根据市场运行的内在规律,如果跌破这一点,并不是股市没有投资价值,而主要是投资者没有信心。
2. 几个悖论
(1) 经济高成长与上市公司质量差。前一段时间,证券市场上一片打假之声。很多投资者认为,中国的上市公司,业绩好的不能相信,业绩差的也有操纵盈利的嫌疑。我 就不理解,中国的上市公司作为公众公司,经过董事会、股东大会、会计师事务所、交易所、证监会、新闻媒体等等层层监督,难道做假会比非上市公司厉害,难道 中国上市公司的成长远远落后于中国经济的成长?中国的证券市场是转轨经济中的证券市场,不能拿理想的完美的目标来裁剪。国民经济的发展需要国民的信心,难 道证券市场的发展就不需要投资者的信心?
(2) 中国证券领域的市场化程度较高与证券市场问题成堆。客观地讲,证券市场是中国市场体系比较公开、比较透明的市场,也是发展速度较快的市场之一。但给人的印象却是中国证券问题成堆,必须来一次伤筋动骨的调整,甚至推倒重来。这将把中国证券市场引向何方?
(3) 按现金流量贴现计算未必有投资价值,但外资收购意愿强烈。美元兑人民币的汇率并不完全是按购买力平价确定的,而按现行的汇率计算,美元兑换成人民币后有很 强的购买力。这导致在国内投资者看来很贵的股权,在境外投资者未必这么看。2001年11月23日新华社深圳又传出消息,美国艾默生公司花7.5亿美元收 购华为技术公司下属的深圳市安圣电气公司全部股权。安圣电气尚且如此,大唐电信、中兴通讯(2002年1月9日总市值分别为9.57亿美元、12.44亿 美元)难道市场价格很高,对外资没有吸引力吗?不要以为中国的企业不值钱,有些东西并不反映在会计报表里。当然,A股价格存在结构性不合理现象,但不是平 均市盈率畸高。
(4) 11年指数涨了15倍,但投资者整体的平均投资收益率并不高。指数有时会误导决策。乍看来,沪市11年涨了15倍,上证指数年增长率达27.9%,非常之 快了,股市里肯定积累了大量的泡沫。但细心的人应该发现,在1994年8月以前,市场容量很小,股指大起大落,而这少数几家上市公司却将上证指数市场成本 抬高到757.519点。实际上,1994年8月1日至2001年12月31日(平均持筹成本1509.155点)上证指数的年平均收益率为9.74%, 考虑到交易费用(含印花税、佣金、过户费等中国的交易费用率较高,投资者的换手率也较高,所以总的交易费用数额可观),中国投资者的平均年收益率是非常低 的。
从长期来看任何一个国家,其股价指数总是在不断上涨,原因在于经济在增长、上市公司平均净利润总额在增长、市场成本曲线也在逐步抬高。长期来看指数总是上升的,不能看指数涨了多高就据此判断股票市场是否不正常。
(5) 同一上市公司股票,在不同市场上股价及其表现截然不同。有人喜欢将中石化在香港、纽约和上海市场的不同价格来说明中国市场里存在大量泡沫。这种比较是非常 片面的。众所周知,由于市场割裂,国内投资者到香港市场上购买股票受到限制,两个市场上股票的供需关系完全不一样,由此导致价格出现很大差别是很自然的。 如果两个市场是自由流动的,价格自然会相互接轨。另一方面,即使两个市场自由流动了,也不能认为A股股价就一定要以香港股价为标准与之接轨。价格将根据新 的市场供需关系重新决定。

NFS出错了,Permission denied

今天同事跟我说网站的图片不能显示了,后来检查的时候发现一个NFS的怪异现象。

在mount nfs目录时出现错误:

mount -t nfs 192.168.1.172:/nfs/mp3/mp3files /web/mp3/mp3files
mount: 192.168.1.172:/nfs/mp3/mp3files failed, reason given by server: Permission denied

我原来的/etc/exportfs是这样的:
[root@ha1 nfs]# cat /etc/exports
/nfs/mp3/mp3files 192.168.1.*(rw,async)

一直都用的好好的,其它的机器通过内网IP来mount这台上面的数据。

所以我想应该是我做了什么造成的,因为之前我看到/var/log/messages

mountd[3082]: Fake hostname rs0.xxxxxxcom for 192.168.1.69 – forward lookup doesn’t exist

以为nfs警告说我没有做域名反解,所以我就在我的域名服务器做把192.168.1.69做了一下反解。并增加了rs0.xxxxx.com这个域名到192.168.1.69。做完之后就没有再出现上面的错误了,但是上面说的出现不能mount的情况。

在网上查了一些资料,有人说把/etc/exports换成域名试试,所以我就改成了:
[root@ha1 nfs]# cat /etc/exports
/nfs/mp3/mp3files *.xxxxxx.com(rw,async)

再mount,发现正常,没有问题了。

后来又查了一些相关资料,才知道:

nfs server接到客户端的mount时,会先客户的IP做反解成域名,用域名(注意是用域名而不是IP)去和/etc/exports做比较,如果匹配不成功会失败。

而我做了域名反解后,并没有更新/etc/exports内的IP为域名。所以匹配不到对应的域名,自然就出现mount: 192.168.1.172:/nfs/mp3/mp3files failed, reason given by server: Permission denied的错误了。

之前用IP没有问题是因为在域名不能反解的时候还是用IP去匹配的。