作者存档: zhcj - 第5页

bash脚本学习(一)

[2014年6月3日更新]

这两天突然对bash感兴趣了,写了个抓取学校内网通知的小脚本,就当学习吧。两个脚本,一个是内网抓取网页,另外一个是服务器上更新的。

脚本一,本地内网执行:get.sh

#!/bin/bash
#定义抓取链接及目录
dir="news/"
url="http://192.168.1.102/news/liulan2.aspx"
#创建文件夹
if [ ! -d $dir ];then
	mkdir $dir
	lastid='1'
fi
#获取上次更新id
len=`echo ${#dir}`
lastid=`find $dir | sort | tail -1 | sed 's/.txt//g'`
lastid=`echo ${lastid:$len}`
#抓取新闻列表,获取最后更新的id
id=`curl $url | grep liulan1.aspx?newsid= | head -n 1 | sed 's/<a href=liulan1.aspx?newsid=//g' | sed 's/ target=_blank>//g' | sed 's/t//g' | sed 's/r//g'`
#抓取页面
for (( i = $id ; i > $lastid ; i --))
do
	filename=$dir$i".htm"
#如果文件不存在,则抓取为文件,将文件转码,方便linux下处理
	if [ ! -f $filename ];then
		curl "http://192.168.1.102/news/liulan1.aspx?newsid="$i | iconv -c -f gbk -t utf8 | sed "s/charset=gb2312/charset=UTF-8/g" > $filename
	else
		echo $filename" exist,skip!"
	fi
#删除不存在的新闻	
	error=`cat $filename | grep 'web.config'`
	if [ !$error ];then
#如果新闻存在,则上传至服务器
		scp $filename root@***.***.***:/xxnw/news/
	else
		rm $filename
		echo "del unexisted file!"
	fi
done
#远程执行更新
ssh root@***.***.*** "/xxnw/addnews.sh"

脚本二,服务器上运行:addnews.sh

#/bin/bash
dir="/xxnw/news/"
if [ ! -d $dir ];then
	echo '没有那个文件夹!'
	exit
fi
for file in `ls $dir | grep 'htm'`
do
	filenum=${file%.*}
	newfile1=$dir$filenum".sql"
	newfile2=$dir$filenum".txt"
	if [ ! -f $newfile2 ];then
		url="http://192.168.1.102/news/liulan1.aspx?newsid="$filenum
		echo "INSERT INTO `news_article` (`news_id`,`news_web`,`news_type`,`news_url`,`news_title`,`news_post`,`news_posttime`,`news_content`) VALUES("","学校内网","校园新闻","$url","" | iconv -f gbk -t utf8 > $newfile2
		cat $dir$file | head -35 |  sed "s/<[^>]+>//g;s/
$//g;s/ //g;s/^[ t]*//g;s/[ t]*$//g;" | sed '2,30d' | sed '3,5d' | sed '4,6d' | sed -e '/^$/d' | sed -e '1a","' | sed '3a","' | sed '5a","' >> $newfile2 
		tail -n +39 $dir$file | sed "s/<[^>]+>//g;s/
$//g;s/ //g" | tr 'n' ' ' | sed 's/^[ t]*//g;s/[ t]*$//g' | sed 's/"/\"/g' >> $newfile2
		echo "");" >> $newfile2
		cat $newfile2 | tr -d 'n' > $newfile1
		tail -n +39 $dir$file | sed -e '$d' | sed -e '$d' | sed -e '$d' | sed -e '$d' > $newfile2
		echo $file
		mysql -uroot -ppassword dbname < $newfile1
		rm $newfile1
	fi
done

一下子就把从2008年以来的800多条通知全部抓下来了,呵呵!没网络权限,不然直接拖库了。

脚本还有些小问题,回头再研究。

续:现在基本上完善了,我只需在局域网的linux笔记本上运行一下:./get.sh,服务器上的数据就更新了,太方便了^-^

VPS优化及配置网站过程

这几天给一网友配置CentOS6.4的vps,香港的,速度不错,简要记录一下过程:

一、格式化并挂载数据分区、迁移原网站数据

fdisk /dev/sdb
mkfs.ext4 /dev/sdb1
mkdir /www
mount /dev/sdb1 /www
scp root@原网站ip:/www/* /www/

二、清理无用的桌面软件包(脚本:clean.sh)

#!/bin/bash
yum remove gnome* -y
yum remove blue* -y
yum remove gtk* -y
yum remove qt* -y
yum remove httpd* -y
yum remove openoffice* -y
yum remove libreoffice* -y
yum remove sane* -y
yum remove iwl* -y
yum remove ModemManager* -y
yum remove pulseaudio* -y
yum remove alsa* -y
yum remove wireless* -y
yum remove wpa* -y
yum remove dejavu* -y
yum remove wqy* -y
yum remove w17* -y
yum remove m17* -y
yum remove avahi* -y
yum remove xorg* -y
yum remove cjkuni* -y
yum remove mobile* -y
yum remove mesa* -y
yum remove samba* -y
yum remove selinux* -y
yum remove fontconfig* -y
yum remove ppp* -y
yum remove *firmware* -y
yum remove nano* -y
yum remove postfix* -y
yum remove gstreamer* -y

清理掉500多个包。

三、关闭无用的服务(脚本:killservice.sh)

#!/bin/bash
service acpid stop
chkconfig acpid off
service abrtd stop
chkconfig abrtd off
service certmonger stop
chkconfig certmonger off
service auditd stop
chkconfig auditd off
service rpcbind stop
chkconfig rpcbind off
service xinetd stop
chkconfig xinetd off
service abrt-ccpp stop
chkconfig abrt-ccpp off
service abrt-oops stop
chkconfig abrt-oops off

四、升级系统:

yum update

有228个包需要升级,reboot重启后,卸载旧内核:

yum remove kernel

五、安装LNMP(脚本:lnmp.sh)

#!/bin/bash
#加nginx官方源
rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
#安装nginx+php-fpm+mysql
yum install nginx php-fpm mysql-server php-mysql php-mbstring php-gd php-pear -y
#设置mysql密码
service mysqld start
mysqladmin -u root password '密码'
#配置nginx、php
vi /etc/nginx/nginx.conf
vi /etc/nginx/conf.d/default.conf
#启动nmp服务并设置开机启动
service php-fpm start
service nginx start
chkconfig nginx on
chkconfig mysqld on
chkconfig php-fpm on
#打开80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart

六、其他优化设置
1、mysql数据库位置迁移

vi /etc/my.cnf

修改如下字段:

datadir = /var/lib/mysql

2、隐藏php版本信息
3、nginx设置优化:隐藏nginx版本号、设置cpu数量、设置静态文件缓存等
4、修改root密码、ssh端口,防止网络扫描攻击
5、mysql定期备份脚本

待续。。。

grub2如何挂载iso安装Ubuntu/Ubuntu Kylin/Deepin Linux

最近Deepin Linux 2014 alpha和Ubuntu/Ubuntu Kylin相继发布,由于U盘找不到了,没法刻录U盘来安装,用原来grub2挂载iso安装arch的方法无法安装,急死。。。

今天早晨上班路上突然想到,既然上述方法挂载不成功,可以借用iso里面的grub脚本(是不是我太笨了,才想到这个。。。)。想到就做,上午经过多次尝试,终于成功安装了Ubuntu Kylin 14.04和Deepin Linux 2014 alpha!

废话不说了,具体过程如下(Ubuntu/Ubuntu Kylin/Deepin Linux通用,以Ubuntu Kylin 14.04为例):

1、添加grub2启动脚本,启动live环境(没有直接启动安装,因为安装过程中无法自动卸载/iosdevice):

menuentry "Kylin" {
        set isofile="/os/ubuntukylin-14.04-desktop-amd64.iso"
        loopback loop (hd0,5)$isofile
        linux   (loop)/casper/vmlinuz.efi  file=(loop)/preseed/ubuntu.seed boot=casper iso-scan/filename=${isofile} quiet splash --
       initrd   (loop)/casper/initrd.lz
}

Deepin Linux中下面的红色字体改成deepin即可。

2、启动live环境之后,Deepin可以直接双击桌面上的安装图标进行安装,而Ubuntu Kylin则需要打开终端,运行脚本再点击左侧安装图标:

sudo umount -l /isodevice

3、安装界面出来了,安装吧!

顺便说一句,这两个新版都很漂亮,不错!

Virtualbox压缩vdi硬盘

来源:http://blog.csdn.net/bbplayers/article/details/7770775

Virtualbox使用时间长了之后,vdi文件会越来越大,虽然硬盘有足够的空间,但对于有洁癖的来说,自然要想办法压缩一下。详细内容请参考上述链接,简单步骤如下:

1、在Guest OS中清理系统, Windows的话可以再硬盘碎片整理一下;

2、在Guest OS中,Windows使用sdelete -z(工具下载)、Linux使用zerofree([yum/apt-get] install zerofree);

3、进入Virtualbox安装目录,运行:VBoxManage modifyhd <uuid>|<filename>  –compact

完成。

用此办法,我把Linux中的Win7压缩了3g多。

gentoo linux # /opt/VirtualBox/VBoxManage modifyhd /document/virtualbox/win7.vdi --compact
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

虚拟机中安装的CentOS网卡不自动启动

在vbox中用minimal的iso安装了个CentOS,发现找不到网卡,只有lo,没有eth0之类的。

一开始以为是安装的有问题,后来dmesg发现有eth0:

pcnet32: Found PHY 0022:561b at address 0
eth0: registered as PCnet/FAST III 79C973
pcnet32: 1 cards_found

只好先手动启动:

ifconfig eth0 up
dhclient

经过搜索,才知道默认没有启动,需要修改配置文件才行。参考:http://bbs.chinaunix.net/thread-4064236-1-1.html

sed -i "s/ONBOOT=no/ONBOOT=yes/g" /etc/sysconfig/network-scripts/ifcfg-eth0

问题解决!

联想昭阳E4430G安装gentoo

最近单位配了新笔记本,联想昭阳E4430G,配置不错。

拿到手后,发现已经安装了盗版win7,一堆垃圾软件,果断重装系统。

经历了若干次分区(win和linux下都分过)、格式化(反正不是自己的,产权归学校,出了问题单位没人管,还得自己找售后),目前是win8+gentoo+openSUSE+mint+deepin。本来想弄个黑苹果玩,结果硬件较新,各种问题,最后放弃了。

配置较高,安装gentoo速度也快,但感觉没预想中的快。由于对硬件不熟悉,驱动问题折腾了很久。

首先是有线网卡,ubuntu安装上直接能用,gentoo中在内核中编译上了Realtek 8169的驱动,有线网络解决。

再就是无线网卡,在win7下面查到此网卡是rtl8723be,联想官方提供了windows下面的驱动。linux中的驱动折腾了很久,经过搜索,最终发现最新的linux内核根本不支持此网卡,linux内核官方说3.15版内核才会加入此网卡驱动(链接)。没办法,只好自己动手了,最后终于找到了一个驱动编译安装上,问题也解决了。原来的驱动东西太多,而且安装时出现找不到路径问题,把它精简了一下,改了下Makefile,ubuntu、arch和gentoo中均测试通过(百度网盘)。后来尝试过官方有人提供的rtl8723be的内核patch,编译进内核,不成功。就先这样凑和用吧,就是麻烦点,每次升级内核之后需要重新编译驱动。

最折腾的就是声卡了,hda-intel的声卡。ubuntu和arch安装上,声音正常。gentoo中始终有问题,编译进内核、编译成模块均不行。在网上找到一个声卡驱动,编译上之后,终于有声音了。最后在微博中求助,有人建议make.conf中添加pulseaudio的新,再emerge -uND world,问题终于解决!

虽然还不是很完美,但基本能用了,有时间再好好研究。

Failed to load VMMR0.r0 (VERR_SYMBOL_NOT_FOUND)

openSUSE13.1中打开虚拟出错:Failed to load VMMR0.r0 (VERR_SYMBOL_NOT_FOUND)

解决办法:

cd /usr/src/vboxhost-4.3.6/vboxdrv/

/etc/init.d/vboxdrv setup

出现如下提示:

Stopping VirtualBox kernel modules                  done
Removing old VirtualBox pci kernel module           done
Removing old VirtualBox netadp kernel module        done
Removing old VirtualBox netflt kernel module        done
Removing old VirtualBox kernel module               done
Recompiling VirtualBox kernel modules               done
Starting VirtualBox kernel modules                  done

问题解决!

ubuntu下共享无线网络

环境:ADSL,无路由器,台式机+无线网卡,笔记本(无线+有线)

1、安装ubuntu的笔记本连接ADSL:

单击网络图标->编辑连接->添加->DSL->新建->DSL,输入用户名和密码。

ubuntu-wang3

 

 

 

 

 

 

 

2、ubuntu添加一个无线网络:

单击网络图标->编辑连接->添加->Wi-Fi->新建,在“Wi-Fi”选项卡中输入连接名称、SSID,“模式”设置为“Ad-hoc”;在“IPv4设置”选项卡中,“方法(M)”一栏设置为“与其他计算机共享”。

完成后,其他机器的无线网卡直接连接你所设置的SSID即可。

ubuntu-wang1 ubuntu-wang2

openSUSE添加Wine源,安装最新版Wine

由于openSUSE官方源里的Wine版本低,在运行TM2013时有问题,因此,加源安装一个最新版Wine来运行TM2013。

1、加源

zypper ar http://download.opensuse.org/repositories/Emulators:/Wine/openSUSE_13.1/ Wine

2、安装

zypper in wine

博客的Akismet好像出问题了,最近的评论被删除了

这两天垃圾评论泛滥,昨天清理的时候,结果把最近的几条评论删除了。。。

第 5 页,共 49 页« 最新...34567...102030...最旧 »