Paramiko_ssh访问

# paramiko_pwd.py
import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect('192.168.0.114', port=22, username='test', password='123456')

# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls -ltr /etc')
# 获取命令结果
res, err = stdout.read(), stderr.read()
result = res if res else err
print(result.decode())
# 再执行另一条命令并获取命令结果
stdin, stdout, stderr = ssh.exec_command('df')
res, err = stdout.read(), stderr.read()
result = res if res else err
print(result.decode())
# 关闭连接
ssh.close()
total 868
-rw-r--r-- 1 root root        887 Apr  1  2013 rpc
-rw-r--r-- 1 root root       2932 Apr  1  2013 protocols
-rw-r--r-- 1 root root        280 Jun 20  2014 fuse.conf
-rw-r--r-- 1 root root       3663 Jun 20  2016 screenrc
-rw-r--r-- 1 root root        604 Sep 15  2018 deluser.conf
-rw-r----- 1 root daemon      144 Nov 12  2018 at.deny
-rw-r--r-- 1 root root       1260 Dec 14  2018 ucf.conf
-rw-r--r-- 1 root root        533 Jan 21  2019 logrotate.conf
-rw-r--r-- 1 root root      14867 Feb  1  2019 ltrace.conf
-rw-r--r-- 1 root root       2969 Aug  3  2019 debconf.conf
-rw-r--r-- 1 root root       5060 Aug 21  2019 hdparm.conf
-rw-r--r-- 1 root root        642 Sep 24  2019 xattr.conf
-rw-r--r-- 1 root root      24546 Oct 18  2019 mime.types
-rw-r--r-- 1 root root        449 Oct 18  2019 mailcap.order
-rw-r--r-- 1 root root        581 Dec  5  2019 profile
-rw-r--r-- 1 root root         91 Dec  5  2019 networks
-rw-r--r-- 1 root root        267 Dec  5  2019 legal
-rw-r--r-- 1 root root         92 Dec  5  2019 host.conf
-rw-r--r-- 1 root root         13 Dec  5  2019 debian_version
-rw-r--r-- 1 root root        552 Dec 17  2019 pam.conf
-rw-r--r-- 1 root root       1816 Dec 27  2019 ethertypes
-rw-r--r-- 1 root root        111 Jan 16  2020 magic.mime
-rw-r--r-- 1 root root        111 Jan 16  2020 magic
-rw-r--r-- 1 root root         45 Jan 26  2020 bash_completion
-rw-r--r-- 1 root root       2584 Feb  1  2020 gai.conf
-r--r----- 1 root root        755 Feb  3  2020 sudoers
-rw-r--r-- 1 root root      10037 Feb  7  2020 nanorc
-rw-r--r-- 1 root root      10550 Feb  7  2020 login.defs
-rw-r--r-- 1 root root       1523 Feb 10  2020 usb_modeswitch.conf
-rw-r--r-- 1 root root       1382 Feb 11  2020 rsyslog.conf
-rw-r--r-- 1 root root       1042 Feb 13  2020 crontab
-rw-r--r-- 1 root root       2351 Feb 13  2020 sysctl.conf
-rw-r--r-- 1 root root        808 Feb 14  2020 mke2fs.conf
-rw-r--r-- 1 root root        685 Feb 14  2020 e2scrub.conf
-rw-r--r-- 1 root root      14464 Feb 16  2020 services
-rw-r--r-- 1 root root        191 Feb 18  2020 libaudit.conf
drwxr-xr-x 2 root root       4096 Feb 24  2020 usb_modeswitch.d
-rw-r--r-- 1 root root       1748 Feb 25  2020 inputrc
-rw-r--r-- 1 root root       2319 Feb 25  2020 bash.bashrc
-rw-r--r-- 1 root root       5215 Feb 25  2020 manpath.config
-rw-r--r-- 1 root root       2996 Apr 14  2020 locale.alias
-rw-r--r-- 1 root root         34 Apr 14  2020 ld.so.conf
-rw-r--r-- 1 root root        367 Apr 14  2020 bindresvport.blacklist
drwxr-xr-x 2 root root       4096 Apr 22  2020 binfmt.d
-rw-r--r-- 1 root root       6920 Nov  2  2021 overlayroot.conf
-rw-r--r-- 1 root root       4942 Nov 12  2021 wgetrc
-rw-r--r-- 1 root root        477 Feb 10  2022 zsh_command_not_found
drwxrwxr-x 2 root landscape  4096 Feb 14  2022 landscape
-rw-r--r-- 1 root root      10593 Mar 31  2022 sensors3.conf
-rw-r--r-- 1 root root         41 Oct 31  2022 multipath.conf
drwxr-xr-x 2 root root       4096 Jan 20  2023 update-notifier
-rw-r--r-- 1 root root        104 Mar 14  2023 lsb-release
lrwxrwxrwx 1 root root         21 Mar 14  2023 os-release -> ../usr/lib/os-release
-rw-r--r-- 1 root root         19 Mar 14  2023 issue.net
-rw-r--r-- 1 root root         26 Mar 14  2023 issue
drwxr-xr-x 5 root root       4096 Mar 14  2023 systemd
drwxr-xr-x 2 root root       4096 Mar 14  2023 opt
drwxr-xr-x 2 root root       4096 Mar 14  2023 selinux
-rw-r--r-- 1 root root          0 Mar 14  2023 subuid-
-rw-r--r-- 1 root root          0 Mar 14  2023 subgid-
lrwxrwxrwx 1 root root         39 Mar 14  2023 resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
lrwxrwxrwx 1 root root         19 Mar 14  2023 mtab -> ../proc/self/mounts
-rw-r--r-- 1 root root       3028 Mar 14  2023 adduser.conf
drwxr-xr-x 3 root root       4096 Mar 14  2023 ca-certificates
drwxr-xr-x 4 root root       4096 Mar 14  2023 dbus-1
drwxr-xr-x 8 root root       4096 Mar 14  2023 networkd-dispatcher
drwxr-xr-x 4 root root       4096 Mar 14  2023 xdg
drwxr-xr-x 2 root root       4096 Mar 14  2023 cron.monthly
drwxr-xr-x 2 root root       4096 Mar 14  2023 cron.hourly
-rw-r--r-- 1 root root        510 Mar 14  2023 nsswitch.conf
-rw-r--r-- 1 root root        195 Mar 14  2023 modules
drwxr-xr-x 2 root root       4096 Mar 14  2023 newt
drwxr-xr-x 4 root root       4096 Mar 14  2023 iproute2
drwxr-xr-x 2 root root       4096 Mar 14  2023 python3
lrwxrwxrwx 1 root root         23 Mar 14  2023 vtrgb -> /etc/alternatives/vtrgb
drwxr-xr-x 2 root root       4096 Mar 14  2023 skel
-rw-r--r-- 1 root root        106 Mar 14  2023 environment
drwxr-xr-x 2 root root       4096 Mar 14  2023 modules-load.d
drwxr-xr-x 4 root root       4096 Mar 14  2023 dhcp
drwxr-xr-x 2 root root       4096 Mar 14  2023 depmod.d
drwxr-xr-x 4 root root       4096 Mar 14  2023 udev
-rw-r--r-- 1 root root       6824 Mar 14  2023 ca-certificates.conf.dpkg-old
drwxr-xr-x 2 root root       4096 Mar 14  2023 ubuntu-advantage
drwxr-xr-x 3 root root       4096 Mar 14  2023 perl
drwxr-xr-x 3 root root       4096 Mar 14  2023 gss
-rw-r--r-- 1 root root         54 Mar 14  2023 crypttab
drwxr-xr-x 3 root root       4096 Mar 14  2023 dconf
drwxr-xr-x 4 root root       4096 Mar 14  2023 network
drwxr-xr-x 4 root root       4096 Mar 14  2023 pki
drwxr-xr-x 3 root root       4096 Mar 14  2023 libblockdev
drwxr-xr-x 4 root root       4096 Mar 14  2023 polkit-1
drwxr-xr-x 3 root root       4096 Mar 14  2023 ModemManager
drwxr-xr-x 4 root root       4096 Mar 14  2023 logcheck
drwxr-xr-x 3 root root       4096 Mar 14  2023 pm
drwxr-xr-x 3 root root       4096 Mar 14  2023 NetworkManager
-rw-r--r-- 1 root root        350 Mar 14  2023 popularity-contest.conf
drwxr-xr-x 2 root root       4096 Mar 14  2023 cron.d
drwxr-xr-x 3 root root       4096 Mar 14  2023 apparmor
drwxr-xr-x 2 root root       4096 Mar 14  2023 calendar
drwxr-xr-x 2 root root       4096 Mar 14  2023 mdadm
drwxr-xr-x 2 root root       4096 Mar 14  2023 byobu
drwxr-xr-x 2 root root       4096 Mar 14  2023 tmpfiles.d
-rw-r--r-- 1 root root        146 Mar 14  2023 shells
drwxr-xr-x 6 root root       4096 Mar 14  2023 sos
drwxr-xr-x 2 root root       4096 Mar 14  2023 groff
drwxr-xr-x 5 root root       4096 Mar 14  2023 initramfs-tools
drwxr-xr-x 3 root root       4096 Mar 14  2023 ufw
drwxr-xr-x 2 root root       4096 Mar 14  2023 cryptsetup-initramfs
drwxr-xr-x 2 root root       4096 Mar 14  2023 udisks2
drwxr-xr-x 3 root root       4096 Mar 14  2023 update-manager
drwxr-xr-x 3 root root       4096 Mar 14  2023 lvm
drwxr-xr-x 3 root root       4096 Mar 14  2023 fwupd
drwxr-xr-x 2 root root       4096 Mar 14  2023 update-motd.d
drwxr-xr-x 2 root root       4096 Mar 14  2023 rc6.d
drwxr-xr-x 2 root root       4096 Mar 14  2023 rc1.d
drwxr-xr-x 2 root root       4096 Mar 14  2023 rc0.d
drwxr-xr-x 2 root root       4096 Mar 14  2023 PackageKit
drwxr-xr-x 2 root root       4096 Mar 14  2023 cron.weekly
lrwxrwxrwx 1 root root         13 Dec  5 05:16 rmt -> /usr/sbin/rmt
drwxr-xr-x 2 root root       4096 Apr 16 13:47 netplan
-r--r--r-- 1 root root         33 Apr 16 13:47 machine-id
drwxr-xr-x 6 root root       4096 Apr 16 13:48 kernel
drwxr-xr-x 2 root root       4096 Apr 16 13:48 libnl-3
drwxr-xr-x 2 root root       4096 Apr 16 13:48 UPower
drwxr-xr-x 2 root root       4096 Apr 16 13:48 grub.d
drwxr-xr-x 2 root root       4096 Apr 16 13:48 thermald
-rw-r--r-- 1 root root        630 Apr 16 13:48 fstab
drwxr-xr-x 2 root root       4096 Apr 16 13:48 pollinate
-rw-r--r-- 1 root adm         219 Apr 16 13:48 hosts
-rw-r--r-- 1 root adm           5 Apr 16 13:48 hostname
-rw-r--r-- 1 root root        711 Apr 16 13:48 hosts.deny
-rw-r--r-- 1 root root        411 Apr 16 13:48 hosts.allow
drwxr-xr-x 2 root root       4096 Apr 16 13:48 rc5.d
drwxr-xr-x 2 root root       4096 Apr 16 13:48 rc4.d
drwxr-xr-x 2 root root       4096 Apr 16 13:48 rc3.d
drwxr-xr-x 2 root root       4096 Apr 16 13:48 rc2.d
drwxr-xr-x 7 root root       4096 Apr 16 13:49 apparmor.d
drwxr-xr-x 5 root root       4096 Apr 16 13:50 cloud
drwxr-xr-x 2 root root       4096 Apr 16 13:50 rsyslog.d
drwxr-xr-x 2 root root       4096 Apr 16 13:50 sudoers.d
drwxr-xr-x 2 root root       4096 Apr 16 13:50 python3.8
drwxr-xr-x 2 root root       4096 Apr 16 13:50 vim
drwxr-xr-x 2 root root       4096 Apr 16 13:51 iscsi
drwxr-xr-x 4 root root       4096 Apr 16 13:51 vmware-tools
-rw-r--r-- 1 root root          8 Apr 16 13:51 timezone
lrwxrwxrwx 1 root root         27 Apr 16 13:51 localtime -> /usr/share/zoneinfo/Etc/UTC
drwxr-xr-x 4 root root       4096 Apr 16 13:52 security
drwxr-xr-x 2 root root       4096 Apr 16 13:52 terminfo
drwxr-xr-x 2 root root       4096 Apr 16 13:52 profile.d
drwxr-xr-x 2 root root       4096 Apr 16 13:53 ldap
drwxr-xr-x 2 root root       4096 Apr 16 13:53 sysctl.d
drwxr-xr-x 4 root root       4096 Apr 16 13:53 ssl
drwxr-xr-x 3 root root       4096 Apr 16 13:54 apport
drwxr-xr-x 2 root root       4096 Apr 16 13:54 cron.daily
drwxr-xr-x 2 root root       4096 Apr 16 13:54 logrotate.d
-rw-r--r-- 1 root root       7545 Apr 16 13:54 ca-certificates.conf
drwxr-xr-x 2 root root       4096 Apr 16 13:54 pam.d
-rw-r----- 1 root shadow      634 Apr 16 13:55 gshadow-
-rw-r--r-- 1 root root        759 Apr 16 13:55 group-
drwx------ 2 root root       4096 Apr 16 13:55 multipath
drwxr-xr-x 2 root root       4096 Apr 16 13:55 console-setup
-rw-r----- 1 root shadow     1068 Apr 16 13:55 shadow-
-rw-r--r-- 1 root root       1846 Apr 16 13:55 passwd-
-rw-r--r-- 1 root root        797 Apr 16 13:55 group
-rw-r----- 1 root shadow      668 Apr 16 13:55 gshadow
-rw-r--r-- 1 root root         18 Apr 16 13:55 subuid
-rw-r--r-- 1 root root         18 Apr 16 13:55 subgid
drwxr-xr-x 4 root root       4096 Apr 16 13:55 ssh
-rw-r--r-- 1 root root       1897 Apr 16 13:55 passwd
-rw-r----- 1 root shadow     1086 Apr 16 13:55 shadow
drwxr-xr-x 7 root root       4096 May 19 13:45 apt
drwxr-xr-x 4 root root       4096 May 19 13:46 dpkg
drwxr-xr-x 3 root root       4096 May 26 13:01 glvnd
drwxr-xr-x 5 root root       4096 May 26 13:01 vulkan
drwxr-xr-x 2 root root       4096 May 26 13:01 sensors.d
drwxr-xr-x 3 root root       4096 May 26 13:01 pulse
drwxr-xr-x 2 root root       4096 May 28 22:10 bash_completion.d
drwxr-xr-x 2 root root       4096 Jun  1 00:17 ld.so.conf.d
drwxr-xr-x 3 root root       4096 Jun  1 00:17 default
drwxr-xr-x 2 root root       4096 Jun  1 00:17 modprobe.d
-rw-r--r-- 1 root root       9440 Jun  1 00:17 locale.gen
drwxr-xr-x 6 root root       4096 Jun  1 01:48 X11
drwxr-xr-x 2 root root       4096 Jun  1 01:48 init.d
drwxr-xr-x 2 root root       4096 Jun  1 01:48 rcS.d
drwxr-xr-x 4 root root       4096 Jun  1 01:48 fonts
drwxr-xr-x 2 root root       4096 Jun  1 01:48 environment.d
drwxr-xr-x 2 root root       4096 Jun  1 01:48 alternatives
-rw-r--r-- 1 root root       3893 Jun  1 01:48 mailcap
drwxr-xr-x 2 root root       4096 Jun  1 01:48 gtk-3.0
-rw-r--r-- 1 root root      42480 Jun  1 01:48 ld.so.cache

Filesystem                        1K-blocks    Used Available Use% Mounted on
udev                                1960752       0   1960752   0% /dev
tmpfs                                401432    1140    400292   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   8408452 4033596   3926140  51% /
tmpfs                               2007152       0   2007152   0% /dev/shm
tmpfs                                  5120       0      5120   0% /run/lock
tmpfs                               2007152       0   2007152   0% /sys/fs/cgroup
/dev/loop0                            94080   94080         0 100% /snap/lxd/24061
/dev/loop2                            39680   39680         0 100% /snap/snapd/21465
/dev/loop1                            64896   64896         0 100% /snap/core20/1828
/dev/sda2                           1768056  214512   1445412  13% /boot
tmpfs                                401428       0    401428   0% /run/user/1000
/dev/loop4                            65536   65536         0 100% /snap/core20/2318
/dev/loop5                            39808   39808         0 100% /snap/snapd/21759
# paramiko_transport.py
import paramiko
# 创建Transport对象
transport = paramiko.Transport(('192.168.0.114', 22))
# 建立SSH连接
transport.connect(username='test', password='123456')
# 创建SSHClient对象并将其transport变量指定为上述Transport对象
ssh = paramiko.SSHClient()
ssh._transport = transport
# 使用SSHClient对象的方法进行远程操作
stdin, stdout, stderr = ssh.exec_command('ls -ltr /etc')
print (stdout.read().decode())
# 可以创建SFTPClient对象,继续利用Transport对象及其连接执行文件传输操作
# 关闭Transport对象及其连接

# stdin, stdout, stderr = ssh.exec_command('sudo -S df')
# stdin.write('abc123\n')
# stdin.flush()
# print (stdout.read().decode())

transport.close()
# paramiko_tftp.py

import paramiko
# 创建Transport对象
transport = paramiko.Transport(('192.168.0.114', 22))
# 建立SSH连接
transport.connect(username='test', password='123456')
# 创建SSHClient对象并将其transport变量指定为上述Transport对象
ssh = paramiko.SSHClient()
sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('./paramiko_pwd.py', '/tmp/paramiko_pwd.py')
dir = sftp.listdir(path='/tmp')
print(dir)
# 将remove_path 下载到本地 local_path
sftp.get('/etc/hosts', 'centos_host1')   # 将'/etc/hosts' 下载到本地,并重新命名为'centos_host1'

transport.close()

# paramiko_bykey.py
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='192.168.0.114', port=22, username='test', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
res,err = stdout.read(),stderr.read()
result = res if res else err
print(result.decode())
# 关闭连接
ssh.close()
# paramiko_sudo.py
import paramiko

# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 使用非root用户连接服务器
ssh.connect('192.168.0.114', port=22, username='test', password='123456')
# 执行sudo命令时加上-S选项
stdin, stdout, stderr = ssh.exec_command('sudo -S cat /etc/shadow')
# 通过标准输入提供用户密码,注意\n表示回车换行
stdin.write('123456\n')
# 刷新标准输入的内部缓冲区,将其中内容立即提供给标准输入
res, err = stdout.read(), stderr.read()
result = res if res else err
print(result.decode())
# 关闭连接
ssh.close()
# paramiko_tty.py
import paramiko
import sys
import socket
import select
#from paramiko.py3compat import u
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect('192.168.0.114', port=22, username='test', password='123456')
# 启动交互式Shell会话返回一个新的通道
channel = ssh.invoke_shell()
# 通过循环监控用户输入和服务器的回显数据
while True:
    # 通过select模块的select方法监听终端的输入输出,一旦变化,就将数据发送给服务器
    # 其中sys.stdin用于处理用户的输入,channel用于接收服务器返回的数据
    readable, writeable, error = select.select([channel, sys.stdin, ],[],[],1)
    # 如果服务器有数据返回(通常是命令执行结果),则在终端进行显示
    if channel in readable:
        try:
            #data = u(channel.recv(1024))   # 获取服务器的回显数据
            data = (channel.recv(1024))   # 获取服务器的回显数据
            data = str(data, encoding='utf-8')  
            if len(data) == 0:
                print('\r\n*** EOF\r\n')
                break
            sys.stdout.write(data)         # 写入标准输出的缓冲区
            sys.stdout.flush()              # 刷新缓冲区,将缓冲区内容显示出来
        except socket.timeout:
            pass
    # 如果用户在终端输入内容(通常是Shell命令),则将内容发送到服务器
    if sys.stdin in readable:
        input = sys.stdin.readline()
        channel.sendall(input)
# 关闭通道和连接
channel.close()
ssh.close()


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

推荐阅读更多精彩内容