cst05001 cst05001
关注数: 4 粉丝数: 128 发帖数: 14,342 关注贴吧数: 21
[学习笔记]搭建HTTP服务 学习笔记搭建HTTP服务实验环境:操作系统:RHEL5网段:192.168.0.0/255.255.255.0实验目的:搭建HTTP服务配置虚拟主机,IP:192.168.0.1,虚拟主机的文件夹是/etc/www/html2为cst05001-cst05019用户配置独立的个人首页如果页面不存在,不允许访问当前目录的文件夹实验步骤:安装apacheHTTPD依赖的包:postgresql-libaprapr-util然后安装httpd修改配置文件,去掉 中options选项中的 Indexes,禁止如果找不到index.html文件,则显示整个文件夹目录的功能去掉 的注释,为每个用户开启网页服务激活该模块 注释掉UserDir disable去掉UserDir public_html的注释为了方便管理,我在/etc/skel里面为useradd添加模版mkdir /etc/skel/public_htmlecho Hello > /etc/skel/public_html/index.html然后进行用户添加写个sh脚本#!/bin/shfor username in cst050{0..1}{0..9}; douseradd $usernamechmod 755 /home/$usernameecho 123456 | passwd –stdin $usernamedone这里要注意,很多情况下无法访问用户页面,都是因为httpd无权访问用户home目录所致。启动httpd在浏览器输入192.168.0.1,可以查看首页输入192.168.0.1/~用户名/,可以查看用户个人主页如果你觉得在用户名前面输入~很别扭可以这么做修改添加用户的脚本#!/bin/shfor username in cst050{0..1}{0..9}; douseradd $usernamechmod 755 /home/$usernameecho Alias /$username/ '“/home/'$username'/public_html”' >> /etc/httpd/conf/httpd.confecho 123456 | passwd –stdin $usernamedone重启httpd添加虚拟主机首先为网卡分配虚拟主机的IPifconfig eth0:1 192.168.0.10如果你希望配置重启后生效,请自行写入自启动文件,比如 /etc/rc.local编辑httpd.conf直接复制 的配置去掉注释,把*改成虚拟主机的IP地址192.168.0.10配置好DocumentRoot 定向到 /var/www/html2重启httpd访问192.168.0.10成功。注意:httpd服务和DNS服务一样。服务起不来,或者配置失效,一定要检查文件和文件夹的权限!不一定是配置错误!
[学习笔记]搭建NTP服务 学习笔记搭建NTP服务器实验目的:搭建一个NTP服务器,子网的客户端从服务器更新时间,但不得对服务器做任何更改操作。NTP服务器可以从0.cn.pool.ntp.org, 1.cn.pool.ntp.org,其中以0.cn.pool.ntp.org优先。实验环境:操作系统:RHEL 5网段:192.168.0.0/255.255.255.0服务器IP:192.168.0.1实验步骤:服务器端:system-config-time配置本机时区,并设置为UTC制。从ntp.org获取标准时间ntpdate 0.cn.pool.ntp.org重复上面命令几次,直到offset值变小hwclock -w把校对后的时间写入bios。装ntp包配置/etc/ntp.conf基本按照默认配置来就行。ntp的配置文件为了安全,首先把所有网段都给禁止掉了然后在下面开启了127.0.0.1的权限所以我们按照格式,开启192.168.0.0/255.255.255.0的权限。restrict 192.168.0.0 mask 255.255.255.0 nomodify配置serverserver 0.cn.pool.ntp.org preferserver 0.cn.pool.ntp.org这里说明一下server是对上一级服务器的设置restrict是对客户端的设置保存,重新启动ntp服务,就可以了。在客户端用ntpdate 192.168.0.1失败。出现错误:no server suitable for synchronization found其实不是你的错。NTP服务器要在服务启动几分钟后才能正常工作。等一会儿就好了。备注:利用 restrict 来管理权限控制 在 ntp.conf 档案内可以利用『 restrict 』来控管权限,这个参数的设定方式为:restrict [你的IP] mask [netmask_IP] [parameter]其中 parameter 的参数主要有底下这些: * ignore 拒绝所有类型的 NTP 连线; * nomodiy 用户端不能更改 NTP 伺服器的时间参数,这即表示用户端不能使用 ntpc 与 ntpq 这两支程式来修改伺服器罗。 但用户端仍可透过这部主机来进行网路校时的; * noquery 用户端不能够使用 ntpq, ntpc 等指令来查询时间伺服器,等於不提供 NTP 的网路校时罗; * notrap 不提供 trap 这个远端事件登录 (remote event logging) 的功能。 * notrust 拒绝没有认证的用户端。 那如果你没有在 parameter 的地方加上任何参数的话,这表示『该 IP 或网段不受任何限制』的意思喔!一般来说,我们可以先关闭 NTP 的使用权限,然后在一个一个的启用允许登入的网段。 * 利用 server 设定上层 NTP 伺服器 上层 NTP 伺服器的设定方式为:server [IP or hostname] [prefer]在 server 后端可以接 IP 或主机名称,鸟哥个人比较喜欢使用主机名称来设定说! 至於那个 perfer 表示『优先使用』的主机罗~有够简单吧! 摘自鸟哥:linux.vbird.org 更新时间:10/31/2007
自己写了个关键字提取函数,希望对大家游泳 void extract(char **target, char *source,char *leftText, char *rightText){unsigned intcount = 0;unsigned intleftTextLen = 0;unsigned intrightTextLen = 0;char*leftTextCompare = 0;char*rightTextCompare = 0;char*leftTextBegin = 0;char*rightTextBegin = 0;char*leftTextEnd = 0;char*rightTextEnd = 0;char*sourceEnd = 0;unsigned intleftTextComparePos = 0;unsigned intrightTextComparePos = 0;charword[BUFSIZ];strnset(target[count], '\0', BUFSIZ);/* *初始化指针停止标记 */ sourceEnd = source + strlen(source); /* *获取左右边界判定字串的长度 */leftTextLen = strlen(leftText);rightTextLen = strlen(rightText);/* *初始化两个字符数组,存放待比较字串 */leftTextCompare = calloc( leftTextLen+1, sizeof(char) );rightTextCompare = calloc( rightTextLen+1, sizeof(char) );/* *初始化比较标记 */leftTextBegin = source;leftTextEnd = leftTextBegin + leftTextLen;rightTextBegin = leftTextEnd;rightTextEnd = rightTextBegin + rightTextLen;while ( rightTextEnd < sourceEnd && leftTextEnd < sourceEnd ){do{leftTextEnd = leftTextBegin + leftTextLen;strncpy(leftTextCompare, leftTextBegin, leftTextLen);leftTextCompare[leftTextLen] = '\0';++leftTextBegin;if ( !strcmp(leftText, leftTextCompare) )break;}while ( leftTextEnd < sourceEnd && rightTextEnd < sourceEnd);do{rightTextEnd = rightTextBegin + rightTextLen;strncpy(rightTextCompare, rightTextBegin, rightTextLen);rightTextCompare[rightTextLen] = '\0';++rightTextBegin;if ( !strcmp(rightText, rightTextCompare) )break;}while ( rightTextEnd != sourceEnd && leftTextEnd != sourceEnd);leftTextBegin = rightTextEnd;if ( leftTextEnd < sourceEnd && rightTextEnd < sourceEnd)strncpy(target[count], leftTextEnd, rightTextBegin-leftTextEnd-1);printf("%s\n", target[count]);count++;}}水平有限,错了别骂街欢迎讨论功能描述:提取source里left和right中间的关键字,放到二维char数组target中去
【学习笔记】用socket获取网页源码 我已经排除错误了代码如下:#include #include #include #pragma comment(lib, "ws2_32.lib")void geturl(char *url){WSADATA WSAData={0};SOCKETsockfd;struct sockaddr_inaddr;struct hostent*pURL;charmyurl[BUFSIZ];char*pHost = 0, *pGET = 0;charhost[BUFSIZ], GET[BUFSIZ];charheader[BUFSIZ] = "";static chartext[BUFSIZ];int i;/* *windows下使用socket必须用WSAStartup初始化,否则不能调用 */if(WSAStartup(MAKEWORD(2,2), &WSAData)){printf("WSA failed\n");return;}/* *分离url中的主机地址和相对路径 */strcpy(myurl, url);for (pHost = myurl; *pHost != '/' && *pHost != '\0'; ++pHost);if ( (int)(pHost - myurl) == strlen(myurl) )strcpy(GET, "/");elsestrcpy(GET, pHost);*pHost = '\0';strcpy(host, myurl);printf("%s\n%s\n", host, GET);/* *设定socket参数,并未真正初始化 */sockfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);pURL = gethostbyname(host);addr.sin_family = AF_INET;addr.sin_addr.s_addr = *((unsigned long*)pURL->h_addr);addr.sin_port = htons(80);/* *组织发送到web服务器的信息 *为何要发送下面的信息请参考HTTP协议的约定 */strcat(header, "GET ");strcat(header, GET);strcat(header, " HTTP/1.1\r\n");strcat(header, "HOST: ");strcat(header, host);strcat(header, "\r\nConnection: Close\r\n\r\n");/* *连接到服务器,发送请求header,并接受反馈(即网页源代码) */connect(sockfd,(SOCKADDR *)&addr,sizeof(addr));send(sockfd, header, strlen(header), 0);while ( recv(sockfd, text, BUFSIZ, 0) > 0){printf("%s", text);strnset(text, '\0', BUFSIZ);}closesocket(sockfd);WSACleanup();}int main(){charurl[256];printf("http://");scanf("%s", url);geturl(url);return 0;}本人是菜鸟,所以难免有不足之处所以欢迎大家讨论但是请个别人别来这里骂街
首页 1 2 3 4 5 6 下一页