标签归档:Telnet

CentOS 5.5开通Ftp和Telnet服务配置

在安装好CentOS以后,需要设置Ftp和Telnet服务文件,才能启动Ftp和Telnet服务,可以通过远程控制进行开启。
1.1、进入终端命令模式,用root用户登录;
1.2、开启ftp服务。

cd /etc/xinetd.d
#编辑ftp服务的配置文件gssftp:
vi gssftp
#将 修改两项内容:
server_args = -l –a # 去掉-a 改为server_args = -l
disable=yes #改为disable=no

1.3、开启telnet服务

cd /etc/xinetd.d
#察看telnet服务的配置文件krb5-telnet的设置:$ {! b7 r0 A8 d. z
#开启telnet服务设置
vi krb5-telnet
disable=yes # 改为disable=no,保存退出。

1.4、激活服务:
telnet /ftp 是挂在 xinetd 底下的,所以自然只要重新激活 xinetd 就能够将 xinetd 里头的设定重新读进来,所以刚刚设定的telnet /ftp自然也就可以被激活。
激活目录和命令:

cd /etc/rc.d/init.d/
service xinetd restart

有时会提示命令不存在,需要加上命令的路径

[root@localhost init.d]# service xinetd resart
bash: service: command not found
[root@localhost init.d]# /sbin/service xinetd restart

若提示xinetd: 未被识别的服务,则说明/etc/rc.d/init.d下无xinetd包

[root@localhost init.d]# yum -y install xinetd* #下载xinetd包
[root@localhost init.d]# service xinetd resart #重新启动FTP、Telnet服务

这样既可ftp登陆到服务器

错误:ASP 0156 : 80004005

今天一客户联系我说使用的网站添加新闻等操作时候突然报错,提示为
答复对象 错误 ‘ASP 0156 : 80004005’
头错
/nanraocheng/news/admin_news_add_save.asp,行146
HTTP头已经写入到客户浏览器。任何 HTTP 头的修改必须在写入页内容之前。
到达现场后调试发现该ASP程序在本机调试错误,上传后即出现改错误,检测后得出结论为缓冲输出的错误,解决方法及原理如下:
原因是
iis5.0   默认使用网页缓存,pws或iis4.0(winnt系统)   默认不使用网页缓存   。
所以<%response.buffer   =   true%>放在顶部或response.redirect   语句放在任何html语句前面。即在使用Response.Redirect之前不要输出任何客户端(Browse)的   HTML   或   Script!
一般都是在最前面加上 <%response.buffer=true%>
 

使用ASP的Scripting.Dictionary对象打造完美购物车

一直不习惯用Dictionary,但是有时候却很有用。
Dictionary 对象
Dictionary 对象用于在结对的名称/值中存储信息((等同于键和项目)。Dictionary 对象看似比数组更为简单,然而,Dictionary 对象却是更令人满意的处理关联数据的解决方案。
比较 Dictionary 和数组:

  • 键用于识别 Dictionary 对象中的项目
  • 无需调用 ReDim 来改变 Dictionary 对象的尺寸
  • 当从 Dictionary 删除一个项目时,其余的项目会自动上移
  • Dictionary 不是多维,而数组是
  • Dictionary 与数组相比,有更多的内建对象
  • Dictionary 在频繁地访问随机元素时,比数组工作得更好
  • Dictionary 在根据它们的内容定位项目时,比数组工作得更好

Dictionary 对象的属性和方法描述如下:

属性
CompareMode:设置或返回用于在 Dictionary 对象中比较键的比较模式。
Count:返回 Dictionary 对象中键/项目对的数目。
Item:设置或返回 Dictionary 对象中一个项目的值。
Key:为 Dictionary 对象中已有的键值设置新的键值。
方法
Add:向 Dictionary 对象添加新的键/项目对。
Exists:返回一个逻辑值,这个值可指示指定的键是否存在于 Dictionary 对象中。
Items:返回 Dictionary 对象中所有项目的一个数组。
Keys:返回 Dictionary 对象中所有键的一个数组。
Remove:从 Dictionary 对象中删除指定的键/项目对。
RemoveAll:删除 Dictionary 对象中所有的键/项目对。

<%
Dim oDic,aItems,aKeys 
Set oDic = Server.CreateObject("Scripting.Dictionary")  '添加 
oDic.Add "aaa",111 
oDic.Add "bbb",222 
oDic.Add "ccc",333 
oDic.Add "ddd",444  '修改 
If oDic.Exists("aaa") Then 
  oDic.key("aaa") = "eee" 'key属性,只读 
  oDic.item("eee") = 555 'item属性,可读写 
End If  '列表 
aKeys = oDic.Keys 
aItems = oDic.Items
For i=0 To oDic.Count-1 
 Response.Write(aKeys(i) & "," & aItems(i)) 
Next  '删除 
Response.Write(oDic.Count) 
oDic.Remove("eee") '从 Dictionary 对象中删除键和项目对 
Response.Write(oDic.Count) 
oDic.RemoveAll() '删除 Dictionary 对象中的所有键和项目对 
Response.Write(oDic.Count)
Set oDic = Nothing
%>

购物车具体用法:

1、为客户建立购物车,名为shop
set session(“shop”)= CreateObject(“Scripting.Dictionary”)
2、检查客户当前购物车商品个数
session(“shop”).count=0
如果为0,那么自然表示购物车现在是空的
3、客户订购某一商品
session(“shop”).add id,num
id表示数据库中商品的ID或编号等,num表示客户订购此商品的
个数
4、客户查看购物车列表(客户确认当前已购买了的商品列表)
id=session(“shop”).keys
num=session(“shop”).items
以上2句均返回的是数组型数据,分别付给id(商品ID组)和num(
商品数量组)这2个变量
聪明的你马上就会想到只要通过循环把它们一一对应起来就OK了:
for i=0 to session(“shop”).count-1
…id(i)
…这里可以结构操作数据库把商品的信息取出来,通过操作商品编
号数组id(i)
do while not rs.eof
…num(i)
…然后循环结果集,使价格等与商品对应,通过操作商品个数数组
num(i)
rs.movenext
loop
next
数组的下标是从0开始,所以要count-1哦
这部可能有点乱,不过如果你有点经验的话应该是很容易读懂的。
5、客户更改某一商品的订购数量
session(“shop”)(id)=num
太简单了,我不多解释了。
6、客户删除某一商品
session(“shop”).remove(id)
7、客户清空购物车
session(“shop”).removeall
 

ASP读取xls格式的Excel文件

Excel也是一种数据库,跟Access类似,其读取方法也类似。
这里有一个简单的Excel表,文件名字为Excel.xls:

咱就这个为例子来说明。
创建Excel连接代码:

Dim XlsConn,xrs
Set XlsConn=Server.CreateObject("Adodb.Connection")
XlsConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("Excel.xls")&";Extended Properties=Excel 8.0"

是不是跟连接Access文件很像呢?呵呵~
连接创建好了,就可以创建记录集查询Excel里面的数据了。

Set xrs=XlsConn.Execute("Select * From [Sheet1$]")

跟其他数据库的查询几乎是一样的,要注意的地方就是表名,Excel里面,默认会有三张表,Sheet1、Sheet2、Sheet3,从上面的例子也可以看到,需要注意查询时表名后面要加“$”符;查询结果:

xrs(0)="数据列0"
xrs(1)="1"
xrs(2)="2"
xrs(3)="3"
xrs(4)="4"
xrs(5)="5"

这里有一点需要注意,如果一列中有多行,有的行的值是数字,有的行是字符,ASP去取值的时候数字行会读取出错,是为空的。所以得想办法把数字行也变成字符型,比如加个’号去,读取出来之后再替换回去。
 
多行自然是用xrs.Movenext去循环取得了。够简单吧!
最后贴一段代码:

Dim rs
Set rs=Server.CreateObject("Adodb.Recordset")
rs.Open "Select Top 1 * From Pro Where 1=2",Conn,3,2
Dim XlsConn,xrs
Set XlsConn=Server.CreateObject("Adodb.Connection")
XlsConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("Excel.xls")&";Extended Properties=Excel 8.0"
Set xrs=XlsConn.Execute("Select * From [Sheet1$]")
Do While Not xrs.Eof
rs.Addnew
rs("iClear")= xrs(0)
rs("Detail")= xrs(1)
rs.Update
xrs.Movenext
Loop
xrs.Close()
Set xrs=Nothing
XlsConn.Close()
Set XlsConn=Nothing
rs.Close()
Set rs=Nothing

The system cannot locate the resource specified.

ASP网站采集程序用的好好的,今天突然出现这问题。本地能正常采集,就是服务器上死活不让采。

The system cannot locate the resource specified.

这个是捕捉到的Err.Description提示。程序如下:

Set xmlHttp = CreateObject("Msx"&"ml2.XM"&"LHT"&"TP.6.0")
xmlHttp.Open "POST", PostUrl, False 
XmlHTTP.setRequestHeader "Content-Length",Len(PostData)  
xmlHttp.setRequestHeader "Content-Type","application/x-www-form-urlencoded" 
xmlHttp.setRequestHeader "Referer", RefererUrl
xmlHttp.Send PostData

Google之,错误原因及其解决方法有不少,罗列一下:

(一)那就是最基本的了,你的服务器不支持xmlhttp或组件版本态低,需要下载相应的组件。这个一般服务器都不需要的,大多数情况下都支持xmlhttp,所以这个情况较少。
(二)msxml3.dll文件可能损坏或该文件使用权限不够(权限这个情况可能性较小),如果是文件损坏的话,你可以到网上下载相应系统环境的msxml3.dll文件替换下(2003系统好像在c:windowssystem32下),需要关闭相应的服务例如iis等才能覆盖。
(三)防火强或杀毒软件禁用了相应的端口,具体该怎么设置要根据不同的软件而定,你可以试着关闭防火墙或杀毒软件后再测试确定是否是这个问题。
(四)重新注册下该组件试试看。开始>>运行: regsvr32 msxml3.dll
(五)DNS解析错误,检查你的网络设置或正确的域名解析访问
(六)检查你的IP筛选的设置(这个不是太了解)
(七)对方资源失效,比如采集某条信息时,对方该条信息不存在导致程序终止错误,也可能是这种情况。这种错误都是出现在调用了 xmlhttp 组件的 Open方法,接着再用Send方法后造成的。当open方法的的 url 参数无法访问时,就会造成 8000005 错误。并且一旦产生这种错误,就会导致应用程序终止,无法继续操作。
(八)进入服务器设置您的IE安全选项(把等级设中或低试试看),在受信任网站里加入您要获取的域名即可。
(九)去微软下载了MSXML 4.0 Service Pack 2 (Microsoft XML Core Services)和Hotfix for MSXML 4.0 Service Pack 2 – KB832414 – 简体中文(KB832414_MSXML4.0_x86.exe)安装后,问题解决了!

仔细看了一下,貌似讲的都跟我这不一样,因为我同个服务器另外一个采集程序能正常采集。于是上服务器上查看,期待能找到点端倪。
将采集网站的网址放服务器上浏览器运行,居然打不开。猜测应该是对方把我的IP给屏蔽掉了。
知道原因就好办了,于是本地采集数据,然后远程插入服务器数据库。搞定。 本地的IP是动态的,每天都变,看你怎么屏蔽,要想彻底搞定我,他只能修改网站代码不让采集了。
道高一尺,魔高一丈~! 嘿嘿~

ASP '80020009' 错误及其解决办法

CSDN 文档中心发表文章的时候,大的,用Word转过来的文章经常会报以下错误:
 错误 ‘80020009’
发生意外。
/Develop/add_sql.asp,行25
今天在把Access里面的数据转到SQL2000里面去,然后再生成静态页面的时候也出现了这样的问题。
而这里第25行的代码只是:
m_Develop_content = Trim(Request.Form(“content”))
这里只是接受数据。应该不是代码的问题。在CSDN搜索了相关帖子,这样的错误也不少,基本上都没有答案,在看到一个帖子的时候,发现有个人说,这是因为iis默认设置中最大只能接受200K的内容。是这里造成的原因。
http://expert.csdn.net/Expert/topic/2100/2100898.xml

 
IIS6 可以做以下调整。
先在服务里关闭iis admin service服务
找到windowssystem32inesrv下的metabase.xml,
打开,找到ASPMaxRequestEntityAllowed 把他修改为需要的值,默认为204800,即200K
然后重启iis admin service服务
把它修改为51200000(50M)
IIS5.0/4.0 在注册表内 –
Description of the MaxClientRequestBuffer Registry Value
http://support.microsoft.com/?id=260694

Default Sizes in IIS 4 and 5

In IIS 4.0, the default maximum size of request line and header fields is 2 megabytes (MB).
In IIS 5.0, this is reduced to 128 kilobytes (KB).
In IIS 5.0 with Windows 2000 Service Pack 4 installed, this is reduced to 16 KB.
 
另外,在搜索微软的知识库的时候,发现在数据类型是text BLOB 的读取处理的时候,也有80020009错误
 
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q175/2/39.asp&NoWebContent=1

When dealing with BLOB fields from Microsoft SQL Server, you must put them to the right of non-BLOB columns in the resultset. To be safe, you should also read the columns in left-to-right order, so if you have two BLOB columns as the last two columns in your resultset, read the first one and then the second. Do not read them in the reverse order.
数据读取的先后顺序,竟然也会出现这个问题。
看了这么多资料,不解。觉得我这个错误不应该是这些原因造成的。仔细检查代码,发现原来是记录集被我提前关闭了。修改、搞定!
So easy~!