扩展的几个应用 、 发布网络YUM源 、 vim编辑技巧 、 源码编译安装

案例1:补充应用技巧

案例2:软连接与硬连接

案例3:man手册、zip备份

案例4:自定义yum软件仓库

案例5:发布及测试yum仓库

案例6:vim效率操作

案例7:编译安装软件包

1 案例1:补充应用技巧

1.1 问题

本例要求掌握在运维中比较常用的一些扩展命令技巧的使用,完成下列小技巧操作:

采用数值形式将目录/root的权限调整为 rwx------

将记录的历史命令条数更改为 200 条

统计 /boot、/etc/pki 目录占用的空间大小

以格式“yyyy-mm-dd HH:MM” 显示系统时间

1.2 方案

date日期时间工具:

显示日期时间:date、date +"%Y-%m-%d %H:%M:%S"

调整日期时间:date -s "yyyy-mm-dd HH:MM:SS"

恢复为硬件时间:hwclock -s

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:采用数值形式将目录/root的权限调整为 rwx------

1)查看原来的权限

[root@svr7~]# ls-ld  /root/

dr-xr-x---.22root root40963月2614:59 /root/

2)修改为新权限

[root@svr7~]# chmod700  /root/

3)确认权限设置结果

[root@svr7~]# ls-ld  /root/

drwx------.22root root40963月2614:59 /root/

步骤二:将记录的历史命令条数更改为 200 条

1)调整记录条数

修改配置文件/etc/profile,找到HISTSIZE行,将此变量的值修改为200:

[root@svr7~]#vim  /etc/profile

....

HISTSIZE=200

2)确认设置结果

所有用户重新登录以后即可生效:

[root@svr7~]# su-root

[root@svr7~]# echo  $HISTSIZE

200

步骤三:统计 /boot、/etc/pki 目录占用的空间大小

1)分别统计结果

[root@svr7~]# du-sh  /boot//etc/pki/

130M      /boot/

1.5M    /etc/pki/

2)比较du与ls查看文件大小的差异(默认块大小4096字节):

[root@svr7~]# ls-lh  /etc/inittab//数据大小511字节

-rw-r--r--.1root root511Sep162015 /etc/inittab

[root@svr7~]# du-sh /etc/inittab//实际占用4KB磁盘空间

4.0K    /etc/inittab

步骤四:以格式“yyyy-mm-dd HH:MM” 显示系统时间

[root@svr7~]# date+"%F %R"

2016-12-2616:23

2 案例2:软连接与硬连接

2.1 问题

本例要求理解软连接与硬连接的基本差异,完成下列操作:

新建文件 file1,内容为 AAAA

为 file1 建立软连接 file1-s,对比两文件内容

为 file1 建立硬连接 file1-h,对比两文件内容

删除文件 file1 ,再查看文件 file1-s、file1-h 内容

2.2 方案

软连接与硬连接:

软连接:指向原始文件的路径,若原始文件被删除,连接文件将失效;原始文件可以是目录;原始文件与连接文件可以在不同的分区/文件系统

硬连接:原始文件被删除,连接文件仍然有效;原始文件不能是目录;原始文件与连接文件必须在同一个分区/文件系统

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:使用ln命令为文档/目录建立连接

1)新建一个测试文件

[root@svr7~]# vim  file1

AAAA

2)为文件file1建立软连接file1-s并测试

[root@svr7~]# ln-s  file1  file1-s

[root@svr7~]# cat  file1-s

linux.tedu.cn

3)为文件file1建立硬连接file1-h并测试

[root@svr7~]# ln  file1  file1-h

[root@svr7~]# cat  file1-h

linux.tedu.cn

4)对比原始文件、软连接、硬连接的属性

[root@svr7~]# ls-l  /root/f0*.txt

-rw-r--r--.2root root14Jan612:14file1-h

lrwxrwxrwx.1root root12Jan612:16file1-s->file1

-rw-r--r--.2root root14Jan612:14file1

步骤二:原始文件删除测试

1)当原始文件被删除时,软连接将会失效,而硬连接仍然可访问文件数据

[root@svr7~]# rm-rf  file1

[root@svr7~]# cat  file1-s

cat:file1-s:No such file or directory

[root@svr7~]# cat  file1-h

linux.tedu.cn

2)如果已知原始文件和硬连接的路径,当原始文件丢失时,可以快速重建

[root@svr7~]# ln  file1-h  file1

[root@svr7~]# ls-l  /root/f0*.txt

-rw-r--r--.2root root14Jan612:14file1-h

lrwxrwxrwx.1root root12Jan612:16file1-s->file1

-rw-r--r--.2root root14Jan612:14file1

3)不支持为目录创建硬连接,但可以为目录建立软连接

[root@svr7~]#ln  /etc/sysconfig/network-scripts//etc/network

ln:'/etc/sysconfig/network-scripts/':hard link not allowedfordirectory

[root@svr7~]# ln-s  /etc/sysconfig/network-scripts//etc/interface

[root@svr7~]# ls-l  /etc/interface

lrwxrwxrwx.1root root31Jan612:28 /etc/interface->/etc/sysconfig/network-scripts/

3 案例3:man手册、zip备份

3.1 问题

本例要求掌握man帮助手册的使用,以及zip压缩/解压缩的操作,完成下列任务:

查阅passwd命令、/etc/passwd配置文件的手册页

使用zip打包/usr/share/doc/qemu-kvm/目录

3.2 方案

zip/unzip压缩与解压缩:

制作zip压缩包:zip [-r] 备份文件.zip 被归档的文档...

释放zip压缩包:unzip 备份文件.zip [-d 目标文件夹]

3.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:使用man手册页获取帮助

1)查看passwd命令的手册页

[root@svr7~]# man  passwd

PASSWD(1)User utilitiesPASSWD(1)

NAME

passwd-update user's authentication tokens

SYNOPSIS

      passwd  [-k]  [-l]  [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w

      warndays] [-i inactivedays] [-S] [--stdin] [username]

DESCRIPTION

      The passwd utility is used to update user's authenticationtoken(s).

This task is achieved through calls to the Linux-PAM and Libuser API.

Essentially,it initializes itself as a"passwd"servicewithLinux-

      PAM and utilizes configured password modules to authenticate and then

update a user's password.

.. ..

2)查看/etc/passwd配置文件的手册页

[root@svr7~]# man2passwd

PASSWD(5)Linux Programmer's Manual                PASSWD(5)

NAME

      passwd - password file

DESCRIPTION

      The  /etc/passwd  file  is  a  text  file  that  describes user login

      accounts for the system.  It should have read permission allowed  for

      all users (many utilities, like ls(1) use it to map user IDs to user‐

      names), but write access only for the superuser.

      In the good old days there was no great  problem  with  this  general

      read  permission.  Everybody could read the encrypted passwords, but

      the hardware was too slow to crack a well-chosen password, and  more‐

      over  the  basic assumption used to be that of a friendly user-commu‐

      nity.  These days many people run some version of the shadow password

      suite,  where /etc/passwd has an 'x' character in the password

.. ..

步骤二:使用zip命令制作压缩包

1)将目录/usr/share/doc/qemu-kvm/备份为/root/qemu-kvm.zip

[root@svr7~]# zip-r  /root/qemu-kvm.zip  /usr/share/doc/qemu-kvm/

adding:usr/share/doc/qemu-kvm/(stored0%)

adding:usr/share/doc/qemu-kvm/COPYING(deflated62%)

adding:usr/share/doc/qemu-kvm/COPYING.LIB(deflated65%)

adding:usr/share/doc/qemu-kvm/Changelog(deflated61%)

adding:usr/share/doc/qemu-kvm/LICENSE(deflated45%)

adding:usr/share/doc/qemu-kvm/README(deflated4%)

2)恢复测试

删除目标文件夹并确认结果:

[root@svr7~]# rm-rf  /usr/share/doc/qemu-kvm/

[root@svr7~]#ls  /usr/share/doc/qemu-kvm/

ls:cannotaccess /usr/share/doc/qemu-kvm/:No such file or directory

恢复目标文件夹并确认结果:

[root@svr7~]#unzip  /root/qemu-kvm.zip-d  /

Archive:/root/qemu-kvm.zip

creating:/usr/share/doc/qemu-kvm/

inflating:/usr/share/doc/qemu-kvm/COPYING

inflating:/usr/share/doc/qemu-kvm/COPYING.LIB

inflating:/usr/share/doc/qemu-kvm/Changelog

....

[root@svr7~]#ls  /usr/share/doc/qemu-kvm/

COPYING      README                    qemu-tech.html

COPYING.LIB  README.rhel6-gpxe-source  qmp-commands.txt

Changelog    README.systemtap          qmp-events.txt

LICENSE      qemu-doc.html            qmp-spec.txt

4 案例4:自定义yum软件仓库

4.1 问题

本例要求在CentOS真机上利用Linux的光盘镜像文件准备一个软件仓库目录,完成下列任务:

创建目录 /var/www/html/dvd

挂载 CentOS7-1804.iso 到上述目录

另外,利用收集的一些第三方RPM软件包文件,配置为可发布的yum仓库目录,相关任务如下:

挂载Linux光盘镜像文件到 /var/www/html/dvd目录

下载 LibreOffice 办公软件的 rpm 集合版文件

将其中的内容释放到 /opt/libreoffice/ 目录

为 /opt/libreoffice/ 目录建立仓库档案

4.2 方案

作为yum软件源的目录需要准备的内容:

大量的 .rpm 软件安装包文件

针对这些软件包的 repodata/ 仓库档案

repodata/ 仓库档案提供的数据:

filelists.xml.gz:提供所有软件包的文件安装清单

primary.xml.gz:提供所有软件包的基本/主要信息

other.xml.gz:提供所有软件包的其他信息

repomd.xml:提供上述档案数据文件.xml.gz的下载和校验信息

4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:准备 /var/www/html/dvd 仓库目录

1)创建目录 /var/www/html/dvd

[root@room9pc13~]#mkdir  /var/www/html/rh7dvd

2)挂载 CentOS7-1804.iso 到上述目录

[root@room9pc13~]#vim  /etc/fstab

....

/iso/CentOS7-1804.iso  /var/www/html/dvd  iso9660  loop,ro00

[root@room9pc13~]# mount-a

3)确认部署结果

[root@room9pc13~]#ls  /var/www/html/dvd/

addons  images      Packages                RPM-GPG-KEY-redhat-release

EFI    isolinux    release-notes            TRANS.TBL

EULA    LiveOS      repodata

GPL    media.repo  RPM-GPG-KEY-redhat-beta

步骤二:准备 /opt/libreoffice/ 仓库目录

1)将获取的LibreOffice软件集合包释放到指定目录

[root@room9pc13~]# ls  LibreOffice_5.1.6.2_Linux_x86-64_rpm.zip

LibreOffice_5.1.6.2_Linux_x86-64_rpm.zip

[root@room9pc13~]# unzip  LibreOffice_5.1*.zip-d /opt/libreoffice

Archive:LibreOffice_5.1.6.2_Linux_x86-64_rpm.zip

inflating:/opt/libreoffice/install

creating:/opt/libreoffice/langpack_zh-CN/

creating:/opt/libreoffice/langpack_zh-CN/RPMS/

....//释放到 /opt/libreoffice 目录

2)使用createrepo建立档案

[root@room9pc13~]#createrepo  /opt/libreoffice/

Spawning worker0with53pkgs

Workers Finished

Saving Primary metadata

Saving file lists metadata

Saving other metadata

Generating sqlite DBs

Sqlite DBs complete

3)确认repodata/档案资料

[root@room9pc13~]#ls  /opt/libreoffice/repodata

1a5d8311268f33ad2cbf91382110e1ef9875aeea366897253a5d27fd42f9e317-other.xml.gz

2cd176f0b00492c0c13e0a659eda7dedeb1ab526dec5fd7c9bac7758558770d2-filelists.xml.gz

6ecab3585a93a917202e177b9569046238332af449a6492fcace96ea79374668-filelists.sqlite.bz2

b09a1f838262e0b67a5ab0d6be516bd921a914afd89864e09650f95662a20371-primary.sqlite.bz2

b6fcf4a24de5dc08585bf52bd34be50d7df376d5fbcf50903bfd3c1dfdf160bf-other.sqlite.bz2

f57724cf309cc102b2ee25596bf8fb39db3c23880404209ac1e379f7b9fd5c49-primary.xml.gz

repomd.xml

5 案例5:发布及测试yum仓库

5.1 问题

沿用案例4,本例要求掌握发布及测试yum仓库的方法,方便在网络内提供集中的yum源服务器,主要完成下列任务:

在CentOS真机 上发布yum源,包括:Linux系统的光盘目录仓库、LibreOffice 的rpm软件包仓库

在主机 pc207 上使用上述yum源

5.2 方案

通过网络发布yum软件源时,只需要配置HTTP或FTP资源服务器,然后将提前准备好的yum仓库目录部署到可访问的资源位置即可。

在访问网络yum软件源时,注意客户端的baseurl地址必须与资源提供方式一致:

baseurl = http://服务器地址/目录名 ==》 /var/www/html/目录名

baseurl = ftp://服务器地址/目录位置 ==》 /var/ftp/目录名

5.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:在CentOS真机上发布yum仓库

1)快速搭建httpd服务器(若已建好,此步可跳过)

[root@room9pc13~]# yum-y  install  httpd//装包

[root@room9pc13~]# systemctl  restart  httpd//起服务

[root@room9pc13~]# systemctl  enable  httpd//设置开机自启

2)确认前一步已经部署到Web网站目录的Linux光盘数据:

[root@room9pc13~]# du-sh  /var/www/html/dvd///检查部署结果

9.9G    /var/www/html/dvd/

3)将准备好的LibreOffice仓库目录部署到Web网页目录

[root@room9pc13~]#mv  /opt/libreoffice//var/www/html/

[root@room9pc13~]# du-sh  /var/www/html/libreoffice///检查部署结果

234M    /var/www/html/libreoffice

步骤二:在pc207上访问yum仓库

1)添加新的yum仓库设置

[root@pc207~]#vim  /etc/yum.repos.d/new.repo

[dvd]

name=CentOS Server

baseurl=http://192.168.4.254/dvd

gpgcheck=0

[libreoffice]

name=LibreOffice5

baseurl=http://192.168.4.254/libreoffice

gpgcheck=0

2)测试新的yum仓库

[root@pc207~]# yum  repolist

....

repo id            repo name                            status

libreoffice        LibreOffice553

dvd                  CentOS Server4620

....

6 案例6:vim效率操作

6.1 问题

本例要求掌握使用vim文本编辑器时能够提高操作效率的一些常用技巧和方法,完成下列任务:

将文件 /etc/passwd 复制为 /opt/nsd.txt,然后打开 /opt/nsd.txt 文件,练习命令模式下的切换/复制/删除/查找操作

将文件 /etc/man_db.conf 复制到 /opt 目录下,然后打开 /opt/man_db.conf 文件,将第50~100行内的“man”替换为“MAN”,在 vim 中设置显示行号查看效果

6.2 方案

命令模式常用操作:

1G 或 gg ,跳转到文件的首行

G ,跳转到文件的末尾行

yy、#yy ,复制光标处的一行、#行

p、P ,粘贴到光标处之后、之前

x 或 Delete键 ,删除光标处的单个字符

dd、#dd ,删除光标处的一行、#行

d^、d$ ,从光标处之前删除至行首/行尾

/word 向后查找字符串“word”,再按n/N跳至后/前一个结果

u ,撤销最近的一次操作

U ,撤销对当前行的所有修改

Ctrl + r 取消前一次撤销操作

ZZ 保存修改并退出

末行模式常用操作:

:s/old/new ,替换当前行第一个“old”

:s/old/new/g ,替换当前行所有的“old”

:n,m s/old/new/g ,替换第n-m行所有的“old”

:% s/old/new/g ,替换文件内所有的“old”

:w /root/newfile ,另存为其它文件

:r /etc/filesystems ,读入其他文件内容

:set nu|nonu ,显示/不显示行号

:set ai|noai ,启用/关闭自动缩进

6.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:vim命令模式下的切换/复制/删除/查找

1)建立练习文件

将文件 /etc/passwd 复制为 /opt/nsd.txt:

[root@svr7~]#cp  /etc/passwd  /opt/nsd.txt

2)使用vim打开练习文件,默认处于命令模式

[root@svr7~]#vim  /opt/nsd.txt

....

3)在命令模式下完成下列操作

切换操作:G 最后一行,5G 第5行,gg 第一行。

复制操作:按2yy复制2行,7G移动到第7行,p 粘贴。

删除操作:25G 移动到第25行,200dd 从此行开始删除200行(不够就剩下全删)。

查找操作:gg 第一行,/adm 查找关键词adm,n 跳转到下一个结果。

4)保存并退出编辑器

ZZ 保存退出。

步骤二:vim末行模式下的替换/设置操作

1)建立练习文件

将文件 /etc/man_db.conf 复制到 /opt/ 目录下:

[root@svr7~]#cp  /etc/man_db.conf  /opt/

2)使用vim打开练习文件,输入:切换到末行模式

[root@svr7~]#vim  /opt/man_db.conf

....

:

3)在末行模式下完成下列操作

输入 :set nu ,确认后显示行号。

输入 :50,100 s/man/MAN/g ,确认将第50~100行内的“man”替换为“MAN”。

4)保存并退出编辑器

输入 :wq ,确认后保存并退出编辑器。

7 案例7:编译安装软件包

7.1 问题

本例要求掌握常规源代码应用的安装过程,通过编译的方式安装inotify-tools 软件工具,完成下列任务:

释放 inotify-tools-3.13.tar.gz 源码包

配置 ./configure

编译 make、安装 make install

测试inotifywait监控工具的用法及用途

7.2 方案

对于标准源码发布的C/C++软件包,编译安装一般包括以下过程:

解包:使用tar命令,将下载的源代码释放至指定目录

配置:执行源码目录内的 ./configure 脚本,指定安装目录/功能模块等选项

编译:在源码目录下执行 make 操作,根据配置清单Makefile生成可执行的二进制程序文件

安装:在源码目录下执行make install 操作,将编译好的程序及相关文件复制到安装目录

7.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:确认已配置好编译环境

[root@svr7~]# yum-y  install  gcc  gcc-c++make

....

[root@svr7~]# gcc--version

gcc(GCC)4.8.520150623(Red Hat4.8.5-4)

Copyright(C)2015Free Software Foundation,Inc.

This is free software;see the sourceforcopying conditions.There is NO

warranty;not evenforMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

步骤二:编译安装inotify-tools软件包

1)解包inotify-tools-3.13.tar.gz文件

[root@svr7~]# ls  inotify-tools-3.13.tar.gz

inotify-tools-3.13.tar.gz

[root@svr7~]# tar  xf  inotify-tools-3.13.tar.gz-C /usr/src/

2)配置 ./configure,安装目录默认(/usr/local/*/)

[root@svr7~]#cd  /usr/src/inotify-tools-3.13/          //进入源码目录

[root@svr7 inotify-tools-3.13]#./configure              //配置操作

checkingfora BSD-compatible install.../usr/bin/install-c

checking whether build environment is sane...yes

checkingforgawk...gawk

....

configure:creating./config.status

config.status:creating Makefile

....

[root@svr7 inotify-tools-3.13]# ls  Makefile//检查配置结果

Makefile

3)编译 make

[root@svr7 inotify-tools-3.13]# make

....

Making allinsrc

make[2]:Entering directory `/usr/src/inotify-tools-3.13/src'

make[3]: Entering directory `/usr/src/inotify-tools-3.13'

make[3]:Leaving directory `/usr/src/inotify-tools-3.13'

.. ..

4)安装 make install

[root@svr7 inotify-tools-3.13]# make  install

....

/usr/bin/install-c.libs/inotifywait /usr/local/bin/inotifywait

/bin/sh../libtool --mode=install /usr/bin/install-c'inotifywatch''/usr/local/bin/inotifywatch'

....

[root@svr7 inotify-tools-3.13]#find  /usr/local/-name"inotify*"

/usr/local/bin/inotifywait//确认安装结果

/usr/local/bin/inotifywatch

/usr/local/include/inotifytools

/usr/local/include/inotifytools/inotifytools.h

步骤三:测试inotify-tools软件程序

软件包inotify-tools提供了一个主要程序inotifywait,可以用来监控指定目录或文档的变化,并及时给出通知。

1)开启对/opt目录的事件监控

[root@svr7~]# inotifywait-mrq  /opt&//开启监控

[1]15568

2)修改/opt/目录内容,观察屏幕输出信息

[root@svr7~]#touch  /opt/a.txt//新建文件a.txt

/opt/CREATE a.txt

/opt/OPEN a.txt

/opt/ATTRIB a.txt

/opt/CLOSE_WRITE,CLOSE a.txt

[root@svr7~]#mv  /opt/a.txt  /opt/b.txt//将文件改名

/opt/MOVED_FROM a.txt

/opt/MOVED_TO b.txt

3)结束inotifywait监控

杀死当前用户的第一个后台任务:

[root@svr7~]# kill-9%1

[1]+Killed                  inotifywait-mrq /opt

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容