发布新日志

  • 转:Apache2 httpd.conf 中文版

    2013-02-16 13:26:56

    #
    #这是Apache服务器主要配置文件。
    #它包含服务器的影响服务器运行的配置指令。
    #参见<URL:http://httpd.ache.org/doc-2.0/>以取得关于这些指令的详细信息
    #
    #不要只是简单的阅读这些指令信息而不去理解它。
    #这里只是做了简单的说明,如果你没有参考在线文件,你就会被警告。
    #
    #这些配置指令被分为下面三个部分:
    #1. 控制整个Apache服务器行为的部分(即全局环境变量)
    #2. 定义主要或者默认服务参数的指令,也为所有虚拟主机提供默认的设置参数
    #3. 虚拟主机的设置参数
    #
    #配置和日志文件名:如果你指定的文件名以“/”开始(win32下以“dirver:/”),
    #服务器将使用绝对路径,如果文件名不是以“/”开始的,那么它将把ServerRoot
    #的值附加在文件名的前面,例如,对“logs/foo.log",如果ServerRoot的值
    #为“/usr/local/apache2”,则该文件应为“/usr/local/apache2/logs/foo.log”
    #
    ##第一区:全局环境参数
    #
    #这里设置的参数将影响整个Apache服务器的行为;
    #例如Apache能够处理的并发请求的数量等。
    #
    #ServerRoot:指出服务器保存其配置、出错和日志文件等的根目录。
    #
    #注意!如果你想要将它指定为NFS或其它网络上的位置,
    #请一定要去阅读与LockFile有关的文档(可能在
    #<URL:http://httpd.apache.org/docs-2.0/mod/mpm_common.html#lockfile>)。
    #这将会使你自己也能解决很多问题。
    #
    #路径的结尾不要添加斜线。
    #
    ServerRoot "/usr/loacl/apache2"
    #
    #串行访问的锁文件必须保存在本地磁盘上
    #
    <IfModule !mpm_winnt.c>
    <IfModule !mpm_neware.c>
    #LockFile logs/accept.lock
    </IfModule>
    </IfModule>

    #ScoreBoardFile:用来保存内部服务进程信息的文件。
    #如果未指明(默认),记分板(scoreboard)将被保存在一个匿名的共享内存段中,
    #并且它不能被第三方软件所使用。
    #如果指定了,要确保不能使用两个Apache使用同一个记分板文件,
    #这个记分板文件必须保存在本地磁盘上。
    #
    <IfModule !mpm_netware.c>
    <IfModule !perchild.c>
    #ScoreBoardFile logs/apache_runtime_status
    <IfModule>
    <IfModule>

    #
    #PidFile:记录服务器启动进程号的文件。
    #
    <IfModule !mpm_neware.c>
    PidFile logs/httpd.pid
    </IfModule>

    #
    #Timeout:接收和发送前超时秒数
    #
    Timeout 300

    #
    #KeepAlive:是否允许稳固的连接(每个连接有多个请求),
    #设为"Off"则停用。
    #
    KeepAlive On

    #
    #MaxKeepAliveRequests:在稳固连接期间允许的最大请求数,
    #设为0表示无限制接入。
    #我们推荐你将其设为一个较大的值,以便提高性能
    MaxKeepAliveRequests 100

    #
    #KeepAliveTimeout:在同一个连接上从同一台客户上接收请求的秒数
    #
    KeepAliveTimeout 15

    ##
    ##Server-Pool大小设定(针对MPM的)
    ##

    # prefork MPM
    # StartServers:启动时服务器启动的进程数
    # MinSpareServers:保有的备用进程的最小数目
    # MaxSpareServers:保有的备用进程的最大数目
    # MaxClients:服务器允许启动的最大进程数
    # MaxRequestsPerChild:一个服务进程允许的最大请求数
    <IfModule prefork.c>
    StartServers 5
    MinSpareServers 5
    MaxSpareServers 10
    MaxClients 150
    MaxRequestPerChild 0
    </IfModule>

    # worker MPM
    # StartServers:服务器启动时的服务进程数目
    # MaxClients:允许同时连接的最大用户数目
    # MinSpareThreads:保有的最小工作线程数目
    # MaxSpareThreads:允许保有的最大工作线程数目
    # ThreadsPerChild:每个服务进程中的工作线程常数
    # MaxRequestsPerChild:服务进程中允许的最大请求数目
    <IfModule worker.c>
    StartServers 2
    MaxClients 150
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadsPerChild 25
    MaxRequestsPerChild 0
    </IfModule>

    # perchild MPM
    # NumServers:服务进程数量
    # StartThreads:每个服务进程中的起始线程数量
    # MinSpareThreads:保有的最小线程数量
    # MaxSpareThreads:保有的最大线程数量
    # MaxThreadsPerChild:每个服务进程允许的最大线程数
    # MaxRequestsPerChild:每个服务进程允许连接的最大数量
    <IfModule perchild.c>
    NumServers 5
    StartThreads 5
    MinSpareThreads 5
    MaxSpareThreads 10
    MaxThreadsPerChild 20
    MaxRequestsPerChild 0
    </IfModule>

    # WinNT MPM
    # ThreadsPerChild:服务进程中工作线程常数
    # MaxRequestsPerChild:服务进程允许的最大请求数
    <IfModule mpm_winnt.c>
    ThreadsPerChild 250
    MaxRequestsPerChild 0
    </IfModule>

    # BeOS MPM
    # StartThreads:服务器启动时启动的线程数
    # MaxClients:可以启动的最大线程数(一个线程等于一个用户)
    # MaxRequestsPerThread:每个线程允许的最大请求数
    <IfModule beos.c>
    StartThreads 10
    MaxClients 50
    MaxRequestsPerThread 10000
    </IfModule>

    # NetWare MPM
    # ThreadStachSize:为每个工作线程分配的堆栈尺寸
    # StartThreads:服务器启动时启动的线程数
    # MinSpareThreads:用于处理实发请求的空闲线程数
    # MaxSpareThreads:空闲线程的最大数量
    # MaxThreads:在同一时间活动的最大线程数
    # MaxRequestPerChild:一个线程服务请求的最大数量,
    # 推荐将其设置为0,以实现无限制的接入
    <IfModule mpm_netware.c>
    ThreadStackSize 65536
    StartThreads 250
    MinSpareThreads 25
    MaxSpareThreads 250
    MaxThreads 1000
    MaxRequestPerChild 0
    </IfModule>

    # OS/2 MPM
    # StartServers:启动的服务进程数量
    # MinSpareThreads:每个进程允许的最小空闲线程
    # MaxSpareThreads:每个进程允许的最大空闲线程
    # MaxRequestsPerChild:每个服务进程允许的最大连接数
    <IfModule mpmt_os2.c>
    StartServers 2
    MinSpareThreads 5
    MaxSpareThreads 10
    MaxRequestsPerChild 0
    </IfModule>

    #
    # Listen:允许你绑定Apache服务到指定的IP地址和端口上,以取代默认值
    # 参见<VirtualHost>指令
    # 使用如下命令使Apache只在指定的IP地址上监听,
    # 以防止它在IP地址0.0.0.0上监听
    #
    # Listen 12.34.56.78:80

    Listen 80

    #
    # 动态共享支持(DSO)
    #
    # 为了能够使用那些以DSO模式编译的模块中的函数,你必须有相应的“LoadModule”行,
    # 因此,在这里包含了这些指令,以便能在使用它之前激活。
    # 那些静态编译的模块不需要在这里列出 (即以“httpd -l”列出的模块)
    #
    # 示例:
    # LoadModule foo_module modules/mod_foo.so
    #

    #
    # ExtendedStatus:当调用“server-status”时,控制Apache是产生“全”状态
    # 信息(ExtendedStatus On),还是产生基本信息(ExtendedStatus Off)。
    # 默认为off
    #
    # ExtendedStatus On

    ### 第二区:“主”服务配置
    #
    # 这一区建立被 “主” 服务器用的指令值,以回应那些不被 <VirtualHost>
    # 定义处理的任何请求。
    # 这些数值也提供默认值给后面定义的<VirtualHost>容器。
    # 如果<VirtualHost>中有定义,那么这里定义的指令值将被
    # <VirtualHost>中的定义所覆盖。
    #

    <IfModule !mpm_winnt.c>
    <IfModule !mpm_neware.c>
    #
    # 如果你想使httpd以另外的用户或组来运行,你必须在开始时以root方式启动
    # 然后再将它切换为你想要使用的用户或组。
    #
    # User/Group:运行httpd的用户和组
    # 在SCO (ODT3)上使用“User nouser”和“Group nogroup”
    # 在HPUX上,你可能不能以nobody身份使用共享内存,建议创建一个www用户。
    # 注意一些核心(kernel)在组ID大于60000时拒绝setgid(Group)或semctl(IPC_SET),
    #节在这些系统上不要使用“Group #-1”。
    #
    User nobody
    Group #-1
    </IfModule>
    </IfModule>

    #
    # ServerAdmin:你的邮件地址,当发生问题时Apache将向你发出邮件。
    # 作为一个出错文档,这个地址显示在server-generated页上,
    # 例如:admin@your-domain.com
    #
    ServerAdmin admin@your-domain.com

    #
    # ServerName指定Apache用于识别自身的名字和端口号。
    # 通常这个值是自动指定的,但是我们推荐你显式的指定它以防止启动时出错
    #
    # 如果你为你的主机指定了一个无效的DNS名,server-generated重定向将不能工作。
    # 参见UseCanonicalName指令
    #
    # 如果你的主机没有注册DNS名,在这里键入它的IP地址
    # 无论如何,你必须使用它的IP地址来提供服务,
    # 这里使用一种容易理解的方式重定向服务
    ServerName localhost:80

    #
    # UseCanonicalName:决定Apache如何构造URLS和 SERVER_NAME 和 SERVER_PORT 的指令。
    # 当设置为 “Off”时,Apache会使用用户端提供的主机名和端口号。
    # 当设置为“On”,Apache会使用ServerName指令的值。
    #
    UseCanonicalName Off

    #
    # DocumentRoot:你的文档的根目录。默认情况下,所有的请求从这个目录进行应答。
    # 但是可以使用符号链接和别名来指向到其他的位置。
    #
    DocumentRoot "/home/redhat/public_html"

    #
    # Apache可以存取的每个目录都可以配置存取权限(包括它的子目录)。
    #
    # 首先,我们配置一个高限制的特征。

    # 这将禁止访问文件系统所在的目录,并添加你希望允许访问的目录块。
    # 如下所示
    <Directory />
    Order Deny,Allow
    Deny from all
    </Directory>

    #
    # 注意从这里开始你一定要明确地允许哪些特别的特征能够被使用。
    # - 所以,如果Apache没有象你所期待的那样工作的话,
    # 请检查你是否在下面明确的指定它可用。
    #

    #
    # 这将改变到你设置的DocumentRoot
    #
    <Directory "/home/redhat/public_html">

    #
    # Options:这个指令的值可以是“None”,“All”,或者下列选项的任意组合:
    # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #<
  • 数据链路层学习笔记

    2012-09-10 19:17:52

    数据链路层

     MAC地址是为了识别数据链路层上的节点而设置的。它的地址长度为48位。一个计算机网卡的MAC地址在世界上是唯一的。

    IEEE802.3MAC地址的格式:

    1位:单播地址为(0/多播地址为(1)。

    2位:全局地址为(0/本地地址为(1)。

    324位:IEEE管理的、各个制造商互不相重的地址。

    2548位:制造商管理的、各个产品互不相重的地址。

    制造商标识符作用:当计算机网络由多个制造商的产品构成时候,对于寻找发生故障的原因是非常有用的。正式名称是组织唯一标识符(OUIOrganizationally Unique Identifier)。

     

    从共享传输介质的观点看,计算机网络可以分为共享传输介质型和非共享传输介质型。

    竞争(contention)方式是指对于数据的发生权,是通过竞争方式而得到的方式。

    CSMACarrier Sense Multiple Access):载波侦听多路访问方式。控制方式是:1)确认任何人都没有发送数据;2)发送数据。

    CSMA/CDCarrier Sense Multiple Access with Collision Detection):带冲突检测到载波侦听多路访问方式。控制方式是:1)确认任何人都没有发送数据;2)发送数据,3)一边发送数据;4)一边进行电压监视,处理机制是,a在数据发送结束之前,如果电压都在规定的范围内,则判断为数据发送正常;b在数据发送过程中,如果电压不在规定的范围内,则判断为数据发送发生了冲突;c如果发生冲突, 则停止发送,并等待使用随机数产生的时间间隔后,再重新尝试发送数据。

    令牌传递(token passing)方式,将称为令牌(token)的包在线路中循环传递,用这个令牌来控制数据的发生权,只有拥有令牌的工作站才能发送数据。因此这种方式不会发生冲突,每个工作站都能够平等地获得发送数据的权利。为了提高系统的性能,人们想出了early-tokenappend-token等,它们都是能够同时循环发送多个令牌的方式。

     

    UTPUnshielded Twisted Pair Cable    非屏蔽双绞线

    STPShielded Twisted Pair Calble      屏蔽双绞线

    MMFMulti Mode Fiber             多模态光纤

    SMFSingle Mode Fiber             单模态光纤

    Fiber channel                        光纤信道

     

    Ethernet中表示传输速度的值为:1k=10001M=1000k1G=1000M

    Octet,一个octet8位,与字节几乎具有相同的意义。位(bit):二进制数表示的最小单位。字节(byte):通常八位为一个字节。八位位组(octet):八位为一个八位位组。

     

    数据链路层协议包括EthernetFDDIATMPPP,其中Ethernet最普及,它的控制方法简单,驱动程序容易编写,价格低。早期的EthernetDIX Ethernet)帧格式跟IEEE802.3委员会制定的Ethernet的帧格式是不同的。

    Ethernet帧的格式:

    接收端的MAC地址(6 octect|发送端的MAC地址(6 octet|协议类型(2 octet|数据(461500 octect|FCS4 octet

     

    IEEE802.3 Ethernet帧的格式:

    接收端的MAC地址(6 octect|发送端的MAC地址(6 octet|帧长(2 octet|LLC3 octect|SNAP5 octet|数据(381492 octect|FCS4 octet

     

    数据链路层在仔细划分的话,还可以分为两层:介质访问控制层(MACMedia Access Control)和逻辑链路控制层(LLCLogical Link Control)。

      主要的Ethernet类型域的分配

    协议类型号(十六进制)

    协议

    000_05DC

    IEEE802.3长度域(01500

     

     

    0800

    Internet IPIpv4

    0806

    地址解析协议(ARPAddress Resolution Protocol

    8035

    反向地址解析协议(RARPReverse Address Resolution Protocol

     

     

     

     

    86DD

    IP Version 6

    8863

    PPPoE discovery stagePPPoE发现阶段)

    8864

    PPPoE session stagePPPoE会话阶段)

     

     

     

    交换机的发送方式

    存储(store)和转发(forward)、截断转发(cut-through)方式。存储和转发方式是在检查完FCS之后再转发数据。优点:不转发由于碰撞而遭到破坏的帧以及由于噪声而引起的错误帧。截断转发省在存储完整帧之前就开始转发,优点是延时短缺点是会转发错误的帧。

     

    循环检查技术:生成树(spanning tree)的方法,和源路由寻找(source routing)的方法。生成树是由IEEE802.1D所定义的。在110秒的时间间隔内,在各个网桥之间交换称为网桥协议的数据单位(BPDUBridge Portocol Data Unit)包。并且,使用它能够确定正在使用的通信链路和没有使用的通信链路,从而进行删除循环的控制。具体地讲,可以首先构造具有一个网桥的根(root)和一个树(tree)的结构,然后对它进行处理。源路由选择是IBM公司开发令牌计算机网络时所使用的方法。在该方法中,发送数据的计算机确定经由什么样的路由器来发送帧,并将其写到帧的路由信息域(RIFRouting Information Field)中。

     

    虚拟的局域网(VLANVirtual LAN

    如果使用具有VLAN技术的网桥(或者交换机),则即使不改变配线的布局,也能够变更计算机网络的结构。

    VLAN上的Ethernet帧的格式

    接收端的MAC地址(6 octect|发送端的MAC地址(6 octet|VLAN标志(4 octet|协议类型(2 octet|数据(461500 octect|FCS4 octet 查看(965) 评论(0) 收藏 分享 管理

  • 【转】网络翻译实现

    2012-08-31 16:01:31

    原理:利用有道翻译api,提交要查询的单词,返回json结果,然后对结果进行解析输出。

    代码在Win7中文系统,Py2.7.3调试通过,有道翻译的key要自己申请:
    # -*- coding: cp936 -*-

    import urllib

    import json

    kf = 'xxxx'   #申请的keyfrom
    k = 'xxxxxxxxxx' #申请的API key

    def dealjson(ret):

        ret = json.loads(ret)

        error = ret['errorCode']

        print error

        if error == 20:

            print '要翻译的文本过长'

        elif error == 30:

            print '无法进行有效的翻译'

        elif error == 40:

            print '不支持的语言类型'

        elif error == 50:

            print '无效的key'

        elif error == 0:

            trans = ret['translation']

            for i in trans:

                print i

            print ret['query']

            if 'basic' in ret.keys():

                explain =  ret['basic']['explains']

                for i in explain:

                    print i

                    web =ret['web']

                    for i in web:

                        print i['key'],

                        for j in i['value']:

                            print j,

                        print



    if __name__=='__main__':

        while True:
            kf = 'xxx'
            k = 'xxxx'
            word = raw_input('输入英语单词: ')

            if word == '':

                continue

            word = urllib.quote(word)

            print word

            url = 'http://fanyi.youdao.com/openapi.do?keyfrom='+ kf +'&key=' + k + '&type=data&doctype=json&version=1.1&q='+word

            ret = urllib.urlopen(url).read()
            dealjson(ret)

    转载自:http://www.cnblogs.com/ma6174/
  • TCP/IP综合基础学习笔记一

    2012-08-28 10:04:54

    7 应用层 6 表示层 5 会话层 (换一种分法,合称“应用层”),代表协议:HTTP, SMTP, TELNET, FTP, SNMP, MIME, HTML, MIB。
    4 传输层,代表协议:TCP, UDP。
    3 网络层,代表协议:ARP, IP, ICMP。
    2 数据链路层 1 物理层,代表介质:Ethernet,FDDI, ATM,Token Ring……(双绞线、光纤、同轴电缆)。
    OSI参考模型分7层 (open System Inter-connection, 开放系统互连),

    在各个分层在,需要在欲发送到数据之中附加一个信息,这称为报头,在这个报头中,包含着该层所需要的信息。具体地讲,把记录发送者自己的地址和接收者地址的部分,以及记录数据传输协议有关的信息统称为报头(header)。
    包报头的分层化处理:  Ethernet报头|IP报头|TCP报头|数据
    TCP报头信息:用于识别发送端主机和接收端主机的端口号、表示该包的数据是第几个字节的数据的序列号、保证数据不被破坏的检查和等。
    IP报头信息:包含有接收端的IP地址、发送端的IP地址,以及IP报头后面的数据是TCP还是UDP协议等各种信息。
    Ethernet报头信息:包含有接收端的MAC地址和发送端的MAC地址,以及Ethernet报头后面表示数据协议的信息和Ethernet类型信息。

    通过数据链路层的包的格式:
    【接收端MAC地址|发送端MAC地址|Ethernet类型】Ethernet报头(数据链路层)|【发送端IP地址|接收端IP地址|协议类型】IP报头(网络层)|【发送端端口号|接收端端口号】TCP/UDP报头(传输层)|【数据】应用层的报头和数据(会话层、表示层、应用层)|【FCS】Ethernet结束符(数据链路层)

    包的接收处理过程。
    网络接口的处理:首先检查Ethernet报头的接收端MAC地址是否与自己的地址相符,地址相符则接收该帧,反之拒绝。接着检查Ethernet协议,根据协议向对应的子程序传递数据,如无法处理协议,就不丢弃该数据。
    IP模块的处理:首先检查包的接收地址是否是自己主机的IP地址,是自己的主机地址就接收,反之则丢弃;然后检查协议类型,向对应协议的子程序传递数据,不能处理的协议则丢弃数据。(路由器,检查包接收地址,从路由控制表中查出下一个要发送端主机或者路由器,然后进行转发处理)
    TCP模块的处理:首先计算检查和,确认数据是否损坏,接着确认所接收到的数据是否按照顺序到达,以及检查端口号,根据端口号将正在进行的通信与一个特定的应用程序联系起来。如果接收到的数据准确无误,则向发送端主机返回一个确认数据到达的“确认应答”,在没有获得发送端主机返回的确认前,反复发送该“确认应答”。
    应用程序的处理:对接收到的数据进行分析和处理,如果数据都正确处理,则向发送端的应用层返回一个正常的信息,反之,返回一个错误信息。

    包、帧、数据报、段、消息这5个术语解释:共同点,这5个术语都是用来表示数据的单位。差异点,包是一个无论什么地方都可以使用的通用术语。帧用于表示数据链路层的包。数据报是一个用于IP协议或者UDP协议等网络层以上的包的单位,在具有这样的数据结构的协议中使用该术语。段是一个用于表示基于流动TCP协议中所包含的数据。消息是一个用于表示应用协议的数据单位。

    把两个计算机之间传输数据的物理速度称之为传输速度,虽然说速度,但是由于介质中传输信号的速度是一定的,所以物理链路层的传输速度是没有快慢的区别。传输速度又可称为带宽(band width)。

    实际上,在主机之间发送和接收数据的速度称为吞吐量(throughput)。吞吐量意味着实际的传输速度,它不仅与数据链路的带宽有关,而且还与CPU的处理能力,计算机网络的拥挤程度和包中数据所占的比例有关(不包括报头,只计算数据)等有关。

    传输速度、带宽和吞吐量,三者单位都用bit/s(bit per second)来表示。

    通信方式的种类:连接型和无连接型,单播通信、多播通信和广播通信,线路交换和包交换。

    中继器:对0和1进行识别并加以整形。集线器就是多口的中继器。
    网桥:对数据链路层的帧进行识别后,重新组成新帧再加以发送。删除发生错误的帧。(有学习和过滤功能,可以控制交通流量,以达到最佳状态。)交换机就是多口的网桥。
    路由器:把不同的计算机网络连接起来,并对包进行中继的设备。
    网关:指在OSI参考模型的传输层到应用层之间,对数据进行中继的设备。(传输层以上的发送处理以及协议的变换。如Internet的电子邮件和移动电话的电子邮件相互通信,代理服务器。)

  • Python中文件夹处理方法汇总

    2012-08-27 16:28:02

    os.walk(path),例如:
          import os
          from os.path import join,getsize

          for root, dirs,files in os.walk('d:/Testdata/'):    #指定文件夹路径
              print root
             
             
                  for name in dirs:
                      folder = open('foldername.txt', 'a+')
                      print >> folder, name    #保存文件夹名称
                  folder.close()

             
                  for name in files:
                      filename = open('filename.txt', 'a+')
                      print >> file, name    #保存文件名称
                  filename.close()
            
             
                  for name in dirs:
                      fullpath = open('fullpath.txt', 'a+')
                      print >> fullpath, join(root,name)    #保存文件夹完整路径名称
                  fullpath.close()         

                  result=[]
                  for name in files:
                      if name.endswith('.exe'):    #显示指定文件后缀名的文件
                          print name
                          result.append(name) 

                  for name in files:
                       os.remove(os.path.join(root, name))  #移除文件

                  for name in dirs:
                       os
    .rmdir(os.path.join(root, name)) #移除目录


                  print sum(getsize(join(root, name)) for name in files),
                  print
    "bytes in", len(files), "non-directory files"
                  if 'CVS' in dirs:
                       dirs.remove('CVS') # don't visit CVS directories
           
             
           os.listdir(path),也能获取指定目录下的文件和文件夹名称,并返回一个列表,它不包含子目录下的名称。
           os.mkdir(path)来创建目录。
           os.makedirs(path))来创建多级目录。
           os.rmdir(path)来删除文件夹。(目录为空,否则会报错)
           os.remove(path)来移除文件。
           os.removedirs(path)来移除多个文件夹。
           os.rename(src,dst)来给文件和文件夹重命名。
           os.renames(src,dst),类似removedirs。
           os.getcwd()来显示当前目录。
           os.chdir(path)来改变当前目录。
           os.stat(path)来显示文件的属性。如:st_size是文件大小,单位bytes,st_atime是访问时间(time.ctime(filestats[stat.st_atime]))
           os.walk(path),遍历目录下所有目录和文件,返回一个3元组,[目录X,目录下的list,文件名]
           os.path.split(path),把path分成两部分。
           os.path.splitext(filename),把文件名分成文件名称和扩展名。
           os.path.dirname(path),把目录名提出出来。
           os.path.basename(filename),取出文件名。
           os.path.getatime(path),获取path最后访问时间。
           os.path.getmtime(path),获取path最后修改时间。
           os.path.getctime(path),回去path创建时间。
           os.path.getsize(path),获取path大小。
           os.path.isabs(path),如果 path 是一个绝对路径名返回True (以一个斜杠开始)。
           os.path.isfile(path),如果文件存在,返回True。
           os.path.isdir(path),如果目录存在,返回True。
           os.path.realpath(path),标准化一个路径名。
          

    参考:
    Py2.7.3 docs 15.1.3. File Descriptor Operations
  • Twisted框架、zope.interface和pyOpenSSL的安装

    2012-08-27 13:48:09

    1、从http://pypi.python.org/pypi/zope.interface下载最新的egg。
    2、把这个egg文件拷贝到python根目录下的scripts目录,跟easy_install.exe在同个目录。
    3、进入cmd模式,在cmd模式下进入这个script目录,执行easy_install.exe  egg文件名,执行安装这个egg文件。

    验证安装成功:import zope.interface,不报错。

    注:
    1、从http://pypi.python.org/pypi/pyOpenSSL下载跟本机Python版本对应的egg文件,安装方法同上。

    2、Twisted框架从http://twistedmatrix.com/trac/wiki/Downloads下载。
  • asp语言运行服务器上的cmd命令

    2010-07-15 13:41:33

    代码:

    <html>
    <body>

    <%
    response.write("Hello World!")
    %>
    <%
    Set WshShell = CreateObject("Wscript.Shell")
    IsSuccess = WshShell.Run ("C:\WINDOWS\system32\cmd.exe /c copy d:\hosts d:\temp" ,1, True)
    'copy d:\hosts d:\temp根据需要修改

    If IsSuccess = 0 Then
    Response.write "命令成功执行" & IsSuccess
    else
    Response.write "命令执行失败!" & IsSuccess
    end if
    %>

    </body>
    </html>

    注意:IIS访问帐号要有cmd.exe的控制权。
  • 【转】PCI、PCI-X、PCI-E区别

    2010-06-23 11:00:13

    PCI、PCI-X、PCI-E区别
    一、PCI总线
    PCI总线标准是由PCISIG于1992年开发的,已经有超过8年的历史。 PCI的总带宽=33MHz×32BIT/8=133MB/S。
    二、PCI-X总线
    PCI-X是在增加了电源管理功能和热插拔技术的 PCI V2.2版本的基础上,将PCI的总带宽由133MB/S增至1.066GB/s。同时它还采用了分离实务即多任务的设计,允许一个正在向某个目标设备请 求数据的设备,在目标设备未准备好之前处理其他任何事情;而在目前的PCI体系中,设备在完成一次请求之前不能理会任何事情,此时的总线时钟周期都被白白 浪费掉了。同时PCI-X还允许把没有准备好发送数据的设备从总线上移走,这样总线带宽可以被其他事务使用,使总线的利用率大幅上升。所以,在相同的频率 下,PCI-X将能提供比PCI高14%~35%的性能。 PCI-X还采用了与IA-64相同的128Bit标准尺寸数据块设计,使通过总线的数据块大小相同,这样就提供了更多的流水线机制,改善了处理器的管 理。

    PCI-X目前分为66MHz、100MHz和133MHz三个版本。工作于66MHz的PCI-X控制器将能访问最多4个PCI-X设备,当然, 如果增加PCI-X至PCI-X的桥接芯片,那么可以支持更多的设备。66MHz PCI-X拥有533MB/s的带宽。 PCI-X总线是共用的,有66,100和133三种.

    100MHz PCI-X的设备均工作于100MHz下,此时PCI-X总线只能管理最多两个PCI-X设备,在64bit总线和100MHz频率下,拥有 800MB/s的带宽。

    最豪华的133MHz PCI-X 工作于133MHz,将能提供惊人的1066MB/s带宽。

    三、PCI-E总线
    PCI Express是新一代能够提供大量带宽和丰富功能的新式图形架构。PCI Express可以大幅提高中央处理器(CPU)和图形处理器(GPU)之间的带宽。对最终用户而言,他们可以感受影院级图象效果,并获得无缝多媒体体 验。

    pci-x不是独立的,按照PCI总线的发展是:pci-pcix-pcie,他们都是为了提高PCI的传输速度的。pci是32位33mhz, pcix是64位提供最高133mhz的频率,pcie是可以在现有频率上通过串行模式多通道合用提供更高的速度,以后的所有的接口都将是PCIE的方 式,不光是显卡。

    PCI --E总线是一种完全不同于过去PCI总线的一种全新总线规范,与PCI总线共享并行架构相比,PCI Express总线是一种点对点串行连接的设备连接方式,点对点意味着每一个PCI Express设备都拥有自己独立的数据连接,各个设备之间并发的数据传输互不影响,而对于过去PCI那种共享总线方式,PCI总线上只能有一个设备进行 通信,一旦PCI总线上挂接的设备增多,每个设备的实际传输速率就会下降,性能得不到保证。现在,PCI Express以点对点的方式处理通信,每个设备在要求传输数据的时候各自建立自己的传输通道,对于其他设备这个通道是封闭的,这样的操作保证了通道的专 有性,避免其他设备的干扰。

    PCI-X是PCI总线的扩展架构,PCI-X频率不像PCI那样固定,而是可以随着设备的变化而变化的。PCI-X采用64位PCI总线,可以支 66,100,133MHz这些频率。而在未来,可能将提供更多的频率支持。PCI-X标准的提出主要面向服务器I/O结构。PCI-X的设计目标在于提 高CPU与外设之间的传输速度,能使服务器的I/O速度提高两倍。与原来的PCI标准开发商不同的是,PCI的续集是由IBM等整机电脑厂商联合开发的。

    PCI-X这样的口在一般的PC主板上看不到,多数都在服务器主板上.这种槽好像是PCI的加强型,槽口很长.它同时支持PCI-X和PCI两种插 卡.

    PCI-Express(简称PCI-E)是最新的总线和接口标准,它原来的名称“3GIO”,是由英特尔提出的。英特尔的意思是它代表着下一代 I/O 接口标准。交由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI-Express”。这个新标准将全面取代现行的PCI和AGP,最终实 现总线标准的统一。它的主要优势就是数据传输速率高,目前最高可达到10GB/s以上。
    PCI Express 带宽 (双向传输模式):
    1 lane - x1:500MB/s
    4 lane - x4:2GB/s (2000MB/s)
    8 lane - x8:4GB/s (4000MB/s)
    16 lane - x16:8GB/s (8000MB/s)
    其中,X16最常见到,它目 前基本上取代了AGP槽成为了显卡的接口标准.能够提供5GB/s的带宽,而AGE 8X带宽为2.1GB/s.

    X2模式将用于内部接口而非插槽模式。PCI-E规格从1条通道连接到32条通道连接,有非常强的伸缩性,以满足不同系统设备对数据传输带宽不同的 需求。此外,较短的PCI-E卡可以插入较长的PCI-E插槽中使用,PCI-E接口还能够支持热拔插.

    PCI-X是由IBM,HP,Compaq提出来的,它是并行接口,是PCI的修正,也就是兼容PCI。
    PCI-E也叫PCI- Express、PCIe,是由Intel提出来的,它是串行接口,不兼容PCI。
    现在的趋势是PCI-E将替代PCI和PCI-X以及AGP, 就像当年PCI替代ISA一样。

    对于和存储器带宽关系很大的总线带宽也同样可以利用这个方法来计算,例如PCI和AGP等总线。比如,PCI带宽=33MHz×32BIT/8= 133MB/S,AGP 1X总线的带宽为66MHz×64BIT/8=528MB/S,AGP 4X带宽=528MHz×4=2.1GB/秒。

    转自:http://netnewsme.blogspot.com/2009/03/pcipci-xpci-e.html

    http://blog.csdn.net/metababy/archive/2009/03/05/3959389.aspx

  • 将man的输出信息保存到文本文件中

    2010-05-17 18:05:16

    命令 man mount > mount.txt,用gedit打开失败,文件类型是应用程序日志;

    命令 man mount | col -b|tee mount.txt, 用gedit打开成功,文件类型是纯文本文件;


  • Ubuntu9.10中自动挂载NTFS分区

    2010-05-17 15:36:33

    Ubuntu中自动挂载分区方法网上搜到有多种

    第一种方法  在/etc/rc.local中写入mount命令
    1 我的硬盘分区情况
    fdisk -l
     Device Boot      Start         End      Blocks   Id  System
    /dev/sda1               1        2556    20531038+  1c  Hidden W95 FAT32 (LBA)
    /dev/sda2   *        2557        5356    22491000    7  HPFS/NTFS
    /dev/sda4            5357       19457   113266282+   f  W95 Ext'd (LBA)
    /dev/sda5            5357        5487     1052226   82  Linux swap / Solaris
    /dev/sda6            5488        9312    30724281    7  HPFS/NTFS
    /dev/sda7            9313       13137    30724281    7  HPFS/NTFS
    /dev/sda8           13138       19457    50765368+   7  HPFS/NTFS

    2 建立mount point
    sudo mkdir /mnt/data
    sudo mkdir /mnt/study
    sudo mkdir /mnt/CPartition

    3 在/etc/rc.local中 写入以下命令
    mount -t ntfs -o iocharset=utf8 -o rw /dev/sda2 /mnt/CPartition

    mount -t ntfs -o iocharset=utf8 -o rw /dev/sda6  /mnt/data/

    mount -t ntfs -o iocharset=utf8 -o rw /dev/sda7 /mnt/study/

    注:网上资料说,9.10已经默认安装了ntfs-3g,不需配置。

    第二种方法 在/etc/fstab (filesystem table)中添加mount命令(待验证)


    第三种方法  把开机执行脚本放到/etc/rc.d/init.d(Ubuntu是/etc/init.d )目录下  (待验证)

  • Linux系统访问windows的共享目录

    2010-05-17 13:02:34

    1 在Path中输入:smb://192.168.2.88  (显示所有共享名)

    2 在终端输入
    sudo mkdir /mnt/pa
    sudo mount -o smbfs -o iocharset=utf8,codepage=cp936,clmask=777,fmask=777,username=pa,password=123456 //192.168.2.88/pa /mnt/pa

    3 位置->网络,点击界面中windows网络->workgroup,在workgroup组中就可以看到windows计算机名,双击会弹出输入用户名和密码的对话框,将我们上面设置smb的用户名和密码输入就可以进行访问。

    4 位置->连接到服务器,在服务类型中选择“windows共享”,在服务器中输入windows计算机的ip地址或计算机名,点击连接,这样在系统桌面中就会显示一个连接到windows 计算机的文件卷,里面就是windows计算机的共享目录了。
    同样在访问的时候要输入smb的用户名和密码。

    5 使用smbclient 命令


  • (转)浏览器发送URL的编码特性

    2009-10-29 22:34:54

    尽管有很多规范URL的标准,例如RFC 3987,但实际应用中却非常混乱。本文主要介绍浏览器发送URL到服务器的一些特性,作为开发和应用的参考。

    通常浏览器会用两种编码方式发送URL到服务器,分别是UTF-8和ANSI(当前系统语言设置,在Windows系统中可以理解为当前代码页)。接下来分别介绍几种常用浏览器发送URL的编码特性。

    一、直接在地址栏输入URL的情况

    中文Windows环境下,假如直接在浏览器的地址栏输入URL:

    http://www.charset.cn/中国.html?kw=中国

    1. IE浏览器特性

      PATH部分 参数部分
      UTF-8模式(默认) %E4%B8%AD%E5%9B%BD.html kw=中国
        UTF-8编码、urlencode GBK编码、无urlencode
      ANSI模式 中国.html kw=中国
        GBK编码、无urlencode GBK编码、无urlencode
    2. 中文Windows环境下,IE中默认发送的URL的PATH部分是UTF-8编码,参数部分是GBK编码。IE的设置选项中有一项是“总是以 UTF-8 发送URL”可以改变发送URL的编码为ANSI。

    3. FireFox浏览器特性

      PATH部分 参数部分
      UTF-8模式 %E4%B8%AD%E5%9B%BD.html kw=%E4%B8%AD%E5%9B%BD
        UTF-8编码、urlencode UTF-8编码、urlencode
      ANSI模式(默认) %D6%D0%B9%FA.html kw=%D6%D0%B9%FA
        GBK编码、urlencode GBK编码、urlencode
    4. 中文Windows环境下FireFox中默认发送的URL的PATH和参数都是GBK编码,在FireFox地址栏输入“about:config”,找到选项“network.standard-url.encode-utf8”,即可改变发送URL的编码方式。

    5. Opera浏览器特性

      PATH部分 参数部分
      UTF-8模式(默认) %E4%B8%AD%E5%9B%BD.html kw=%E4%B8%AD%E5%9B%BD
        UTF-8编码、urlencode UTF-8编码、urlencode

    二、来自网页中的链接

    在不同的浏览器中打开不同编码的网页中的链接,特性也不相同。在不改变浏览器默认选项情况下访问不同编码的网页中以下链接:

    http://www.charset.cn/中国.html?kw=中国

    1. IE浏览器特性

      PATH部分 参数部分
      UTF-8网页 %E4%B8%AD%E5%9B%BD.html kw=中国
        UTF-8编码、urlencode UTF-8编码、无urlencode
      GBK网页 %E4%B8%AD%E5%9B%BD.html kw=中国
        UTF-8编码、urlencode GBK编码、无urlencode
    2. FireFox浏览器特性

      PATH部分 参数部分
      UTF-8网页 %E4%B8%AD%E5%9B%BD.html kw=%E4%B8%AD%E5%9B%BD
        UTF-8编码、urlencode UTF-8编码、urlencode
      GBK网页 %D6%D0%B9%FA.html kw=%D6%D0%B9%FA
        GBK编码、urlencode GBK编码、urlencode

    如果改变IE默认选项为ANSI模式或者将FireFox改为UTF-8模式的访问结果可以自己测试。

    几点说明:

    1. 对于开发人员而言,一定要考虑到不同环境下URL编码的不同,才能实现系统更好的兼容性。兼容性好的系统必须要能够识别来自客户端URL的编码,才能正确处理。
      例如在Opera浏览器地址栏直接输入“http://www.baidu.com/s?wd=我们”,就会发现不能正确访问。
    2. 不同的WEB服务器对各种编码的URL处理也不相同,尽量不要使用中文字符作文件名。
    3. 如果写入网页中的链接包括中文字符,最好使用urlencode处理,才能和当前网页编码无关。否则有可能不能正确访问。
    4. 很多情况下浏览器的地址栏看到URL并不等同于发送到服务器的URL。要正确查看浏览器发送的到服务器URL,最好借助一些工具分析HTTP的请求头。

  • Making PC's speak with SAPI.SoVice(转载)

    2009-10-25 11:18:15

    让PC读指定的文本

    Set bjTTS=CreateObject("SAPI.SpVoice")
    with objtts
    .volume=100
    .speak "Making PC's Speak with SAPI.SpVoice. Not a useful script, but a little fun never the less."
    end with

    'bat下可以调用
    'mshta vbscript.:createobject("sapi.spvoice").speak("I LOVE YOU.")

    URL:http://www.visualbasicscript.com/m63061.aspx

    备注:
    like all objects to be created in VBS there are more than just the 3 properties i actually use here.

    SAPI.SpVoice Properties:

    '.Pause = pause speaking
    '.resume = resume after pause
    '.Rate = speed at which voice speaks
    '.Voice = you can use set and a voice value to change the voice (if multiple exist on machine)
    '.Volume = volume of voice (not system volume, just voice)
    '.WaitUntilDone = wait until done - dont know how else to say that ;)


    how to set the 3 useful voice Properties

     'create object and then setup the properties
     Set VObj = CreateObject("SAPI.SpVoice")
       with VObj
           Set .voice = .getvoices.item(0)
           .Volume = 100
           .Rate = 3
       end with
     


    Please notice that the '.getvoices.item(0)' has refrenced item 0, the getvoices is in an array (if multiple are present)

    to retrive the names of the values you could do a simple call like:

     'create object and then loop for the index and name
     Set VObj = CreateObject("SAPI.SpVoice")
       For Each Voice In VObj.getvoices
           I = I + 1
           msgbox "" & (I - 1) & " - " & Voice.GetDescription
       Next
     

    i dont know, its just one of those toy codes any ways
  • Use a VBScript script to ping a machine(转载)

    2009-10-20 14:44:27

    The Windows Management Instrumentation (WMI) classes in Windows XP and later provide a Win32_PingStatus object that you can use to ping a machine. The following script, which you can download at http://www.windowsitpro.com/articles/download/vbpinging.zip uses this object to ping a passed hostname or IP address. Because of space constraints, some lines wrap to two lines.

    Option Explicit

    Dim strHost

    ' Check that all arguments required have been passed.
    If Wscript.Arguments.Count < 1 Then
    Wscript.Echo "Arguments <Host> required. For example:" & vbCrLf _
    & "cscript. vbping.vbs savdaldc01"
    Wscript.Quit(0)
    End If

    strHost = Wscript.Arguments(0)

    if Ping(strHost) = True then
    Wscript.Echo "Host " & strHost & " contacted"
    Else
    Wscript.Echo "Host " & strHost & " could not be contacted"
    end if

    Function Ping(strHost)

    dim objPing, objRetStatus

    set bjPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
    ("select * from Win32_PingStatus where address = '" & strHost & "'")

    for each objRetStatus in objPing
    if IsNull(objRetStatus.StatusCode) or objRetStatus.StatusCode<>0 then
    Ping = False
    'WScript.Echo "Status code is " & objRetStatus.StatusCode
    else
    Ping = True
    'Wscript.Echo "Bytes = " & vbTab & objRetStatus.BufferSize
    'Wscript.Echo "Time (ms) = " & vbTab & objRetStatus.ResponseTime
    'Wscript.Echo "TTL (s) = " & vbTab & objRetStatus.ResponseTimeToLive
    end if
    next
    End Function

    You can modify this script. to do whatever you need. Notice that I've commented out some lines (') that give more information about the ping attempt, but you can leave the lines in if the information would be useful to you. Run the script. by using the following command:

    D:\projects\VBScripts>cscript. vbping.vbs savdalex01
    which will give the following sample output:

    Host savdalex01 contacted

    You can find more information about Win32_PingStatus at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_pingstatus.asp .

    URL:http://windowsitpro.com/article/articleid/48449/how-can-i-use-a-vbscript-script-to-ping-a-machine.html

    国内实例

    要添加计算机的话按照第二行的格式添加即可
    还有就是把strOutputFilePath改成你自己的路径

    1. arrComputers = Array(_
    2. "127.0.0.1",_
    3. "172.16.100.4",_
    4. "172.16.100.6")
    5. strDate = Year(Date) & Month(Date) & Day(Date)
    6. strOutputFilePath = "e:\CheckResult - " & strDate & ".txt"

    7. Set bjFSO = CreateObject("Scripting.FileSystemObject")
    8. Set bjFile = objFSO.CreateTextFile(strOutputFilePath)
    9. For Each objComputer In arrComputers
    10.         If Ping(objComputer) = True Then
    11.                 objFile.WriteLine objComputer & " : UP"
    12.         Else
    13.                 objFile.WriteLine objComputer & " : DOWN"
    14.         End If
    15. Next
    16. objFile.Close

    17. Function Ping(strComputer)
    18.         Set bjWMIService = GetObject("winmgmts:\\.\root\cimv2")
    19.         Set colItems = objWMIService.ExecQuery("Select * From Win32_PingStatus Where Address='" & strComputer & "'")
    20.         For Each objItem In colItems
    21.                         Select case objItem.StatusCode
    22.                                 Case 0
    23.                                         Ping = True
    24.                                 Case Else
    25.                                         Ping = False
    26.                         End select
    27.                 Exit For
    28.         Next
    29. End Function

    URL:http://bbs.winos.cn/thread-79977-1-1.html

  • 写给浮躁的IT同仁(转)

    2009-10-14 13:04:45

      1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。

       2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。

       3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,总觉得不够直观。

       4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。

       5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。

       6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。

       7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览群书。

       8.看再多的书是学不全脚本的,要多实践。

       9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里。

       10.学习脚本最好的方法之一就是多练习。

       11.在任何时刻都不要认为自己手中的书已经足够了。

       12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看。

       13.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;

       14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件;

       15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中。

       16.不要漏掉书中任何一个练习——请全部做完并记录下思路;

        17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工作。

       18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的;

       19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能讲清楚才说明你真的理解了。

       20.记录下在和别人交流时发现的自己忽视或不理解的知识点。

       21.保存好你做过的所有的源文件----那是你最好的积累之一。

       22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先你要学会自己找答案,比如google、百度都是很好的搜索引擎,你只要输入关键字就能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!

       23.到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己的帖子没人回的。

       24,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你讨论呢。
      25、不要因为工作简单就不重视,简单的工作做好了能体现个人的态度,简单的工作做好之后才能够有效管理作简单工作的人。

      26、少发牢骚,多提建设性意见,前者说不定哪天会被领导听见,也影响自己的心情;后者可能会得到领导重视,说不定哪天机会就来了,再说以解决问题的思路来看待问题,不断的思考就会不断进步,也有利于良好心态的形成

      27、做好自己能够掌控的事情,对于自己无法影响的东西,少想、少说

      28、吃亏就是占便宜

      29、不要追求绝对公平,否则是自寻烦恼

       浮躁的人容易问:我到底该学什么;----别问,学就对了;

       浮躁的人容易问:Js有钱途吗;----建议你去抢银行;

       浮躁的人容易说:我要中文版!我英文不行!----不行?学呀!

       浮躁的人经常说:啊呀,今天放松一下,从明天开始我一定认真学!

       浮躁的人分两种:只观望而不学的人;只学而不坚持的人;

       浮躁的人永远不是一个高手。

  • 获取纯文本中的指定信息(VBS)

    2009-09-04 20:35:17

    Const MyFile = "D:\1\MyFTPthroughputvalue.txt"
    Const ResourceFile = "D:\1\ftpthroughput20090827.txt"
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    FindString()

    Sub FindString()
    Dim fs,f,ts,t,st,st2,st3,st4,st5,st6
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(ResourceFile)
    Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
    Do While ts.AtEndOfStream <> True
        t = ts.ReadLine()
        st3 = InStr(t,"====")
        st = InStr(t,"D:\Temp\bigfile")
        st2 = InStr(t,"ftp:")
        If st3 <> 0 then  MyData(t)
        If st <> 0 then   MyData("#################################") :MyData(t)
        If st2 <> 0 Then MyData(t) :st4 = Split(t):st5 =Split(st4(5),"S") :st6 = st4(1)/st5(0)/1024/1024*8:MyData(st6)
    Loop
    End Sub

    Sub MyData(t)
    Dim fs,f
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile(MyFile,ForAppending,TristateUseDefault)
    f.WriteLine(t)
    f.Close
    End Sub
  • 文件拷贝和记录传输值和运行时错误代码

    2009-09-03 14:11:12

    On Error Resume Next
    Const verwriteExisting = True    
    Const logpath = "Sambathroughput.txt"    '定义Log文件位置和名字
    Const Times = 2    '定义循环次数
    Log()
    writeLine("Title" & Now)    '在Log中写注释性文字
    TextStreamText()
    'set ws=wscript.createobject("wscript.shell")
    'ws.run ".\call.bat"

    '########################################################################
    Sub TextStreamText
        Const ForReading =1
        Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse =0
        Dim fs,f,ts,s,a
        Set fs=CreateObject("Scripting.FileSystemObject")
        Set f=fs.GetFile("copypath.txt")    '定义读取信息的文件位置和名字
        Set ts=f.OpenAsTextStream(ForReading,TristateUseDefault)
        '获取文件中的Copy信息,执行copy任务
        Do While ts.AtEndOfLine <> True        
            s= ts.Readline()
            WriteLine(s)
            a=Split(s)
            copyfile a(0), a(1)
        Loop
        
        ts.close
    End Sub

    Function copyfile(resource,destination)        '执行文件拷贝函数
        On Error Resume Next
        Dim runstatus,i
        i=0
        Set bjcopy=CreateObject("scripting.FileSystemobject")
        Dim startime,endtime,totaltime,throughput_result,sum,file_size
        sum=0
       
        Do While i<times
            startime=Now
            fscopy=objcopy.CopyFile(resource,destination,OverwriteExisting)
            endtime=Now
            runstatus = Err        '获取VBS运行错误的代码
            If runstatus = 0 Then        '如果运行正常,计算Throughput,反之,把错误代码写入Log文件
                totaltime=DateDiff("S",startime,endtime)
                Set bjsize=objcopy.GetFile(resource)        '获取源文件Size
                file_size=objsize.Size
                throughput_result=file_size*8/1024/1024/totaltime
                writeLine(throughput_result & " Mb/s")
                writeLine("Success")
                sum=sum+throughput_result
                i=i+1
            Else
                writeLine("Fail" & " error code " & runstatus)    '把错误代码写入Log文件
                Exit Do
            End If
        Loop
       
        Dime average
        average=sum/i
        writeLine("average value:" & average)        '计算Throughput平均值
        writeLine("###########################################")
    End Function

    Sub writeLine(Content)        '执行写Log信息
        Set bjFSO=CreateObject("Scripting.filesystemobject")
        Set fs=objFSO.OpenTextFile(logpath,8,False)
        fs.WriteLine(content)
        fs.Close
        Set fs=Nothing
        Set bjFSO=nothing
    End Sub

    Sub createplaintxt()        '执行创建Log文件
        Set bjtxt=CreateObject("scripting.Filesystemobject")
        Set createtxt=objtxt.CreateTextFile(logpath,OverwriteExisting)
        createtxt.Close
        Set createtxt=Nothing
        Set bjtxt=Nothing
    End Sub

    Sub fileExist()            '判断Log文件是否存在
        Set fs=CreateObject("Scripting.FileSystemObject")
        If fs.FileExists(logpath) Then
            Exit Sub
        Else
            createplaintxt()
        End If
        Set fs=Nothing
    End Sub

    Sub Log()    '准备Log文件
        fileExist()
    End Sub


    附文本文件:
    档名:copypath.txt
    内容:
    D:\x\x.exe Z:\x\  X文件上传到Z盘的速度
    Z:\x\x.exe D:\temp\ X文件下载到本地PC的速度
  • VBScript中有关字符串处理的函数

    2009-08-30 21:25:57

    Chr(charcode)
    返回与指定的 ANSI 字符代码相对应的字符。

    InStr 函数
    描述
    返回某字符串在另一字符串中第一次出现的位置。

    InstrRev 函数
    描述
    返回某字符串在另一个字符串中出现的从结尾计起的位置。

    Join 函数
    描述
    返回一个字符串,此字符串由包含在数组中的许多子字符串联接创建。

    Left 函数
    描述
    返回指定数目的从字符串的左边算起的字符。

    Len 函数
    描述
    返回字符串内字符的数目,或是存储一变量所需的字节数。

    LTrim、RTrim 和 Trim 函数
    描述
    返回不带前导空格 (LTrim)、后续空格 (RTrim) 或前导与后续空格 (Trim) 的字符串副本。

    Mid 函数
    描述
    从字符串中返回指定数目的字符。

    Replace 函数
    描述
    返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。

    Right 函数
    描述
    从字符串右边返回指定数目的字符。

    Space 函数
    描述
    返回由指定数目的空格组成的字符串。

    Split 函数
    描述
    返回基于 0 的一维数组,其中包含指定数目的子字符串。

    StrComp 函数
    描述
    返回指示字符串比较结果的值。

    StrReverse 函数
    描述
    返回字符串,此字符串与指定字符串顺序相反。

    TypeName 函数
    描述
    返回一个字符串,提供有关变量的 Variant 子类型信息。

    参考网站:
    http://msdn.microsoft.com/en-us/library/3ca8tfek(VS.85).aspx
    http://www.w3school.com.cn/vbscript/vbscript_ref_functions.asp

  • VB动态数组的定义方法——ReDim语句

    2009-08-30 20:46:00

    描述
    用于过程级声明动态数组变量并分配或重新分配存储空间。
    语法
    ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .

    ReDim 语句语法有以下部分:

    部分 描述
    Preserve 当更改现有数组最后一维的大小时保留数据。
    varname 变量名,遵循标准变量命名约定。
    subscripts 数组变量的维数,最多可以声明 60 维数组。subscripts 参数语法格式如下:

    upper [,upper] . . .

    数组的下界总是零。

    说明
    ReDim 语句通常用于指定或修改动态数组的大小,这些数组已用带有空括号的 PrivatePublicDim 语句(没有维数下标)正式声明过。可以重复使用 ReDim 语句更改数组维数和元素数目。

    如果使用了 Preserve 关键字,就只能调整数组最后维的大小,并且不能改变数组的维数。例如,如果数组只有一维,就可以修改该数组的大小,因为该维是最后的也是仅有的一维。但是,如果数组有两个或更多维,就只能改变末维的大小并保留数组内容。下面的样例示范了如何不删除动态数组的原有内容而又增加末维的大小。

    ReDim X(10, 10, 10)
    . . .
    ReDim Preserve X(10, 10, 15)

    小心 如果减小数组的大小,则将丢失被排除的元素中的数据。

    变量初始化时,数值变量初始化为 0,字符串变量初始化为零长度字符串 ("")。在使用引用对象的变量前,必须使用 Set 语句将某个现有对象赋予该变量。在进行对象赋值以前,已声明的对象变量有特定值 Nothing

    注意:
    ReDim语句只能用于动态数组,它可以改变每一维的大小,但不能改变维数。
    在同一程序中,ReDim语句还可以多次使用。在用:ReDim语句重新定义数组之前,可以使用:Erase语句将原来的数组删除,

    练习一:
    ReDim x(0)
    Dim i

    For i=0 To 2
    ReDim x(i)
    x(i) = i
    MsgBox x(i)
    i=i+1
    Next

  • 记录copy命令的执行时间

    2009-08-28 19:25:33

    set count=1
    set time
    set log=copylog.txt
    :samba_test_loop
    If %count%==3 goto end
    echo ======================= Samba test loop %count% starts ======================= >>%log%
    date /t
    time 00:00:00
    copy D:\2\ravz08.exe d:\1\ /y  ::根据实际情况修改
    If ERRORLEVEL 1 echo copyfail >>%log%
    echo %time% >>cmdlog.txt
    echo ============================================== >>%log%
    set /a count=%count%+1
    goto samba_test_loop
    :end

481/3123>
Open Toolbar