刘遄

刘遄 查看完整档案

北京编辑北京联合大学  |  教育学硕士 编辑LinuxProbe.Com  |  创办人 编辑 www.linuxprobe.com 编辑
编辑

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

个人动态

刘遄 发布了文章 · 4月8日

使用grep搜索多个字符串

grep是一个强大的命令行工具,它允许在一个或多个文件中搜索与正则表达式匹配的行,并将匹配的结果写入标准输出。

Grep的多条件搜索模式

grep支持三种正则表达式语法:Basic、Extended和Perl正则表达式。当没有指定正则表达式类型时,grep将搜索模式解释为Basic基本正则表达式。

使用多条件搜索模式时,请使用|管道符。使用grep的基本正则表达式搜索多个条件,语法如下:

]# grep 'pattern1|pattern2' file

当使用基本正则表达式时,需要使用`转义符为|`管道符转义。

如果使用扩展模式,可以添加-E参数。使用扩展模式,就不需要为|管道符添加转义符了。也可以使用egrep命令,这个命令和grep -E用法一样。

]# grep 'pattern1|pattern2' file
]# egrep 'pattern1|pattern2' file

使用实例

检查操作系统是否开启虚拟化功能,使用Basic基本模式:

[root@localhost ~]# grep 'vmx|svm' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities

使用grep搜索多个字符串使用grep搜索多个字符串
使用扩展模式就不需要添加``转义符了,扩展模式使用方式:

[root@localhost ~]# grep -E 'vmx|svm' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities

或者

[root@localhost ~]# egrep 'vmx|svm' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities

使用grep搜索多个字符串使用grep搜索多个字符串
默认情况grep区分大小写,如果需要忽略大小写,可以添加-i参数:

[root@localhost ~]# grep -E -i 'VMX|SVM' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities

或者

[root@localhost ~]# egrep -i 'VMX|SVM' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities

使用grep搜索多个字符串使用grep搜索多个字符串

总结

grep是一个强大的命令行工具,它允许在一个或多个文件中搜索与正则表达式匹配的行,并将匹配的结果写入标准输出。

查看原文

赞 0 收藏 0 评论 0

刘遄 发布了文章 · 4月8日

Linux中如何启用root用户

你可能想知道如何以root用户登录Ubuntu,或者默认的root密码是什么。在Ubuntu Linux中,出于安全原因,默认情况下禁用了root用户。本教程说明了如何在Ubuntu Linux中启用和禁用root用户。

sudo权限

Sudo允许授权用户作为另一个用户(通常root用户)运行程序。如果要将sudo访问权授予其他用户,只需将该用户添加到sudo组:

bob@ubuntu-18-04:~$ sudo usermod -aG sudo username

sudo的使用方式就是在命令前面加上sudo命令

bob@ubuntu-18-04:~$ sudo tail -1 /etc/passwd

第一次在会话中使用sudo时,系统提示输入当前用户的密码,如果要做到使用sudo免密码,则需要编辑/etc/sudoers文件,可以运行下面命令来编辑这个配置文件:

bob@ubuntu-18-04:~$ sudo visudo

找到%sudo ALL=(ALL:ALL) ALL这一行,在指定位置添加NOPASSWD: ,然后保存退出,就可以免密码使用sudo了。

%sudo ALL=(ALL:ALL) NOPASSWD: ALL

Ubuntu Linux中如何启用root用户Ubuntu Linux中如何启用root用户

开启root用户账号

如果出于某种原因,需要启用root帐户,只需为root用户设置密码就可以了。普通用户首先需要有sudo权限,然后执行sudo passwd root为root用户设置密码:

bob@ubuntu-18-04:~$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Ubuntu Linux中如何启用root用户Ubuntu Linux中如何启用root用户
可以看到,使用su命令切换到root用户,输入密码,可以切换到root用户了。
Ubuntu Linux中如何启用root用户Ubuntu Linux中如何启用root用户
就这样,你可以用root用户登录系统啦。

关闭root用户

当不在需要使用root账号登录时,可以设置root用户的密码为过期,关闭root用户的密码:

bob@ubuntu-18-04:~$ sudo passwd -l root
passwd: password expiry information changed.

Ubuntu Linux中如何启用root用户Ubuntu Linux中如何启用root用户
设置root密码过期之后,使用su命令切换到root用户,发现提示认证失败:

bob@ubuntu-18-04:~$ su - root
Password:
su: Authentication failure

Ubuntu Linux中如何启用root用户Ubuntu Linux中如何启用root用户
这样root用户就不能登录啦。

总结

设置密码时,请确保使用的是一个强而唯一的密码。强密码通常至少有16个字符,至少有一个大写字母、一个小写字母、一个数字和一个特殊字符。

查看原文

赞 0 收藏 0 评论 0

刘遄 发布了文章 · 4月7日

Docker Image 的发布和 Container 端口映射

在按照本文档的步骤操作前,需要安装好 Docker

Docker Image 的发布

方法1:保存 Image 到 tar 包

语法:docker save -o 导出的镜像名.tar 本地镜像名:镜像标签

[root@Docker docker-build]# docker save -o centos-httpd-docker-image.tar centos:httpd
[root@Docker docker-build]# ll -h
total 275M
-rw-r--r--. 1 root root 154 May 17 23:19 Dockerfile
-rw-------. 1 root root 275M May 17 23:37 centos-httpd-docker-image.tar
-rw-r--r--. 1 root root 37 May 17 23:27 index.html
-rwxr-xr-x. 1 root root 29 May 17 23:25 start.sh

使用导入本地镜像

[root@Docker docker-build]# docker rmi -f centos:httpd #删除镜像,这里写自己镜像的 ID 或名称

[root@Docker docker-build]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos apache b8822ec8a7bb 27 minutes ago 280MB
centos latest 470671670cac 4 months ago 237MB
[root@Docker docker-build]# docker load -i centos-httpd-docker-image.tar
Loaded image: centos:httpd
[root@Docker docker-build]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos httpd 85b4a3657ced 8 minutes ago 280MB
centos apache b8822ec8a7bb 29 minutes ago 280MB
centos latest 470671670cac 4 months ago 237MB

方法 2:Push Image To Docker Hub 发布到外网

1、Signup on docker hub & create repo 注册一个帐号
https://hub.docker.com/
2、Login to docker hub

docker login -u userabc -p abc123 -e jaking@gmail.com

3、Push image to docker hub #上传镜像

docker push centos:httpd

4、Pull image from docker hub #下载镜像

docker pull userabc/centos:httpd # 用户名/镜像名

Container 容器端口映射

实战:Container 端口映射

启动 container

[root@Docker ~]# docker run -d -p 80:80 centos:httpd /bin/bash -c /usr/local/bin/start.sh
cf183879c15bd06523ecb6b5e19aec561d679fa5f3bd1842cb2d2994f0d79b04

注: -p 物理机的 80 端口:容器实例的 80 端口 ,把容器中的 80 端口映射到物理机上的 80 端口

另一种启动方式

[root@Docker ~]# cd /docker-build
[root@Docker docker-build]# docker run -d -p 80:80 centos:httpd /bin/bash -c start.sh

在物理机上查看容易状态

[root@Docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cf183879c15b centos:httpd "/bin/bash -c /usr/l…" 24 seconds ago Up 23 seconds 0.0.0.0:80->80/tcp happy_mahavira

查看物理机上开启的 80 代理端口

[root@Docker ~]# netstat -pantu | grep 80
tcp6 0 0 :::80 :::* LISTEN 10870/docker-proxy
udp6 0 0 fe80::c43:91ff:fe1a:123 :::* 7829/ntpd
udp6 0 0 fe80::42:deff:fe9c::123 :::* 7829/ntpd
udp6 0 0 fe80::250:56ff:fe35:123 :::* 7829/ntpd

测试

在浏览器输入 http://192.168.10.7
Docker Image 的发布和 Container 端口映射Docker Image 的发布和 Container 端口映射

总结

以上就是 Docker Image 的发布和 Container 端口映射的操作过程,希望能帮助到大家。

查看原文

赞 0 收藏 0 评论 0

刘遄 发布了文章 · 4月3日

Docker 实战之 CentOS7 系统环境配置

本文档详细介绍 Docker 实战之 CentOS7 系统环境配置,为后期安装 Docker 做准备。

0 优化环境

直接复制以下代码,优化环境,如果执行了一下代码,那么接下来的1和2步骤可以不用再操作了。

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config &> /dev/null
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
iptables -F
systemctl stop NetworkManager &> /dev/null
systemctl disable NetworkManager &> /dev/null

1 关闭SELinux和防火墙

[root@Docker ]# vim /etc/selinux/config
SELINUX=disabled
[root@Docker ]# setenforce 0
[root@Docker ]# getenforce
Permissive

2 关闭Firewalld 和 iptables

[root@Docker ]# systemctl stop firewalld
[root@Docker ]# systemctl disable firewalld
[root@Docker ]# systemctl status firewalld
[root@Docker ]# iptables -F

3 配置 yum 源

[root@Docker ]# mv /etc/yum.repos.d/Cent* /tmp
[root@Docker ]# vim /etc/yum.repos.d/CentOS7.repo
[aliyun-os]
name=aliyun-os
baseurl=https://mirrors.aliyun.com/ce...
enabled=1
gpgcheck=0

[aliyun-epel]
name=aliyun-epel
baseurl=https://mirrors.aliyun.com/ep...
enabled=1
gpgcheck=0

[aliyun-extra]
name=aliyun-extra
baseurl=https://mirrors.aliyun.com/ce...
enabled=1
gpgcheck=0

[root@Docker ]# yum clean all && yum makecache

添加 epel 源

[root@Docker ]# yum install epel-release -y

添加 docker-ce 源

[root@Docker ]# yum install -y yum-utils
[root@Docker ]# yum-config-manager --add-repo http://mirrors.aliyun.com/doc...
[root@Docker ]# cat /etc/yum.repos.d/docker-ce.repo 
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/do...$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/do...$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/do...
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://mirrors.aliyun.com/do...$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/do...$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://mirrors.aliyun.com/do...
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/do...$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/do...$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/do...
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/do...$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/do...$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/do...
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/do...

[root@Docker ]# yum clean all && yum makecache

4 配置 hostname

[root@Docker ]# vim /etc/hostname
Docker

5 配置/etc/hosts

[root@Docker ]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhostlocaldomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.7 Docker

[root@Docker ]# ping $HOSTNAME

6 同步时间

[root@Docker ]# find / -name Shanghai
/usr/share/zoneinfo/Asia/Shanghai
/usr/share/zoneinfo/posix/Asia/Shanghai
/usr/share/zoneinfo/right/Asia/Shanghai
[root@Docker ]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp: overwrite ‘/etc/localtime’? y
[root@Docker ]# yum install -y ntp ntpdate
[root@Docker ]# systemctl enable ntpd
[root@Docker ]# systemctl start ntpd
[root@Docker ]# ntpdate cn.pool.ntp.org
[root@Docker ]# ntpdate 0.rhel.pool.ntp.org

手动改时间: date -s "2019-09-09 19:19"

7 配置 pip 镜像源,方便快速下载python库(这一步很重要)

[root@Docker ]# mkdir /.pip
[root@Docker ]# vim  /.pip/pip.conf  #写入下以内容
[global]
index-url = http://mirrors.aliyun.com/pyp...
[install]
trusted-host=mirrors.aliyun.com

8  配置网卡信息

[root@Docker ]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.10.7
GATEWAY=192.168.10.2
NETMASK=255.255.255.0

总结

以上的操作就是 CentOS7 系统环境配置的过程,为安装 Docker 做好准备。想看怎么安装 Docker 的朋友请持续关注我的文章,希望我的文章能给大家带来帮助。

查看原文

赞 0 收藏 0 评论 0

刘遄 发布了文章 · 3月26日

Linux系统配置NFS文件共享服务

类似winodws的网络共享功能,Linux系统也提供了多种网络文件共享方式,常见的有NFS,Samba,FTP,本文介绍NFS的方式网络文件系统安装与配置

redhat7 配置文件共享服务redhat7 配置文件共享服务

NFS简介

nfs在在消息传递过程中依赖RPC协议,使用NFS时用户端只需要使用mount命令将远程主机的目录挂载到本地即可。
例如要把10.10.0.12的/home/test挂载到本地10.10.0.11的/home/test目录下

[root@localhost ~]# mount 10.10.0.12:/home/test /home/test

配置NFS服务器

NFS 需要安装nfs-utils.rpm rpcbind.rpm

版本号因系统版本有所差别

[root@localhost ~]# yum install -y nfs-utils rpcbind
......

exports参数说明

-a 全部挂载/etc/exports 文件内的设置,-r 重新挂载/etc/exports 文件内的设置,-u卸载某一目录

shownmount参数说明

-a 列出nfs共享的完整目录信息,-d 列出客户端远程安装的目录,-e 显示导出目录的列表

nfs参数说明

ro 只读权限,rw 读写权限,all_squash匿名用户或组,no_all_squash 非匿名用户或组,root_squash将root用户和组映射为匿名用户和组,no_root_squash 与root_squash相反,sync 将数据同步写入缓冲区中,async 将数据先保存在内存缓冲区,再写入磁盘

设置expoprts 文件

[root@localhost ~]# cat /etc/exports
/home/test .(rw)

启动服务

[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# systemctl start nfs-server

配置NFS客户端

[root@localhost ~]# mount -t nfs -o rw 10.10.0.12:/home/test /home/test

如此,就可以使用!

本文原创地址:https://www.linuxprobe.com/redhat-nfs-server.html编辑:王华超,审核员:逄增宝

查看原文

赞 0 收藏 0 评论 0

刘遄 发布了文章 · 3月19日

Linux系统中head命令实例

head命令将每个文件的前10行打印到标准输出。对于多个文件,在每个文件前面加上一个给出文件名的头。如果没有文件,或者文件为-,则读取标准输入。

如何使用head命令

使用head显示/etc/passwd前十行内容:

[root@localhost ~]# head /etc/passwd
root0:0:root:/root:/bin/bash
bin1:1:bin:/bin:/sbin/nologin
daemon2:2:daemon:/sbin:/sbin/nologin
adm3:4:adm:/var/adm:/sbin/nologin
lp4:7:lp:/var/spool/lpd:/sbin/nologin
sync5:0:sync:/sbin:/bin/sync
shutdown6:0:shutdown:/sbin:/sbin/shutdown
halt7:0:halt:/sbin:/sbin/halt
mail8:12:mail:/var/spool/mail:/sbin/nologin
operator11:0:operator:/root:/sbin/nologin

Linux中head命令实例Linux中head命令实例

如何显示指定的行数

使用-n命令显示指定的行数,也可以省略字母n,只使用-和数字(数字和-之间没有空格)。

例如:使用-n 参数显示/etc/passwd前五行内容:

[root@localhost ~]# head -n 5 /etc/passwd
root0:0:root:/root:/bin/bash
bin1:1:bin:/bin:/sbin/nologin
daemon2:2:daemon:/sbin:/sbin/nologin
adm3:4:adm:/var/adm:/sbin/nologin
lp4:7:lp:/var/spool/lpd:/sbin/nologin

Linux中head命令实例Linux中head命令实例

查看多个文件

如果提供了多个文件作为head命令的输入,它将显示每个文件的前十行。下面例子,使用head命令显示/etc/passwd/etc/shadow文件的前两行内容:

[root@localhost ~]# head -n 2 /etc/passwd /etc/shadow
==> /etc/passwd <==
root0:0:root:/root:/bin/bash
bin1:1:bin:/bin:/sbin/nologin

==> /etc/shadow <==
root:$6$a73/Rt1OEkUi04km$GX4FzCh51bqNZpygxDJIPwt2OuxwYF/Qm8UjnIYSvxzrOcIn4UR/rv4yaArJ4jl6YS//ZT8y70eeivYatF89a0::0:99999:7:::
bin:*:17834:0:99999:7:::

Linux中head命令实例Linux中head命令实例

总结

head命令将每个文件的前10行打印到标准输出。对于多个文件,在每个文件前面加上一个给出文件名的头。

查看原文

赞 0 收藏 0 评论 0

刘遄 发布了文章 · 3月15日

给Frp穿透的内网Web上https

2021年了,谁还没有个https呢,不上SSL证书就out了

给Frp穿透的内网Web上https给Frp穿透的内网Web上https

Nginx

第一方法是在服务器端使用Nginx。Nginx监听80和443端口,把来自域名的请求,通过Nginx的反向代理转发给frps监听的端口(比如7000),再由frps在转发给frpc处理http响应。在Nginx里配置上https证书,由Nginx实现ssl的加密解密。Nginx配置https证书和反向代理都是常规操作,不再做多余的演示。觉得麻烦用宝塔。

frp的https配置

frp自身也可以配置上证书提供https服务,服务器frps就安心的做转发就好了。

服务器端frps配置

在服务器端想用Nginx反向代理frps,一直没有测试成功。这里就让frps独占80和443端口。修改frps.ini,

[common]
bind_port = 7000
token=12310086N

vhost_http_port = 80
vhost_https_port = 443

frps执行修改过的配置文件,注意防火墙或者宝塔放行对应的端口。

./frps -c frps.ini

给Frp穿透的内网Web上https给Frp穿透的内网Web上https

内网http响应

此时我的一个192.168.0.156的内网 8000端口存在http的响应页面。

给Frp穿透的内网Web上https给Frp穿透的内网Web上https
给Frp穿透的内网Web上https给Frp穿透的内网Web上https

内网frpc配置

frpc.ini配置根据自己情况修改,证书配置"plugin_crt_path"、"plugin_key_path"使用的是对应域名的nginx的证书。"plugin_local_addr"就是内网对应的http响应端口

[common]
server_addr = 服务器IP
bind_port = 7000
token=12310086N

[test_htts2http]
type = https
custom_domains = 域名

plugin = https2http
plugin_local_addr = 127.0.0.1:8000

HTTPS 证书相关的配置

plugin_crt_path = ./ssl/server.crt
plugin_key_path = ./ssl/server.key
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp

./frpc -c frpc.ini

给Frp穿透的内网Web上https给Frp穿透的内网Web上https

frps端也多了一条连接信息
给Frp穿透的内网Web上https给Frp穿透的内网Web上https

访问

配置上的域名解析到服务器的ip上,访问域名效果给Frp穿透的内网Web上https给Frp穿透的内网Web上https
给Frp穿透的内网Web上https给Frp穿透的内网Web上https

查看原文

赞 0 收藏 0 评论 0

刘遄 发布了文章 · 3月12日

Tee命令使用实例

tee命令用于读取标准输入的数据,将内容输出到屏幕,同时保存成文件,并且可以保存到多个文件。

如何使用tee

tee最基本的用法就是显示输出结果并且保存内容到文件中。下面例子使用free命令显示系统内存使用信息,并使用tee命令将信息输出到屏幕,并保存到文件mem.txt中。

[root@localhost ~]# free -h | tee mem.txt

          total        used        free      shared  buff/cache   available

Mem: 1.8G 164M 1.2G 9.6M 387M 1.5G
Swap: 2.0G 0B 2.0G

可以查看一下mem.txt文件,可以看到输出内容已经保存到mem.txt里面了。
Linux中Tee命令使用实例Linux中Tee命令使用实例

写入到多个文件

tee可以写入多个文件,每个文件之间使用空格分隔。

[root@localhost ~]# free -h | tee mem1.txt mem2.txt mem3.txt

          total        used        free      shared  buff/cache   available

Mem: 1.8G 165M 1.2G 9.6M 389M 1.5G
Swap: 2.0G 0B 2.0G

Linux中Tee命令使用实例Linux中Tee命令使用实例

在已存在的文件底部追加内容

下面的例子使用选项-a在文件底部追加内容,不覆盖原有内容。

[root@localhost ~]# free -h | tee -a mem.txt

          total        used        free      shared  buff/cache   available

Mem: 1.8G 165M 1.2G 9.6M 389M 1.5G
Swap: 2.0G 0B 2.0G

可以看到,在mem.txt文件底部追加了新的内容。
Linux中Tee命令使用实例Linux中Tee命令使用实例
如果不想在屏幕输出内容,可以使用>标准输出符号,重定向到/dev/null中:

[root@localhost ~]# free -h | tee -a mem.txt > /dev/null

总结

tee命令用于读取标准输入的数据,将内容输出到屏幕,同时保存成文件,并且可以保存到多个文件。

查看原文

赞 0 收藏 0 评论 0

刘遄 发布了文章 · 3月12日

Centos8 安装 Gogs 代码仓库管理工具

Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

环境

创建git用户

[root@localhost ~]# useradd git
[root@localhost ~]# echo '123456'|passwd --stdin git
Changing password for user git.
passwd: all authentication tokens updated successfully.

为git用户设置sudo

[root@localhost ~]# visudo
git ALL=(ALL) NOPASSWD: ALL

Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具

下载并配置基本环境

[root@localhost ~]# yum -y install tar wget git mariadb mariadb-server

设置mariadb开机启动,并启动mariadb服务

[root@localhost ~]# systemctl enable mariadb --now

创建gogs数据库

切换到git用户

[root@localhost ~]# su - git

创建数据库

[git@localhost ~]$ mysql -u root -e "CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

[git@localhost ~]$ mysql -u root -e "show databases;"
Database
gogs
information_schema
mysql
performance_schema

Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具
创建数据库gogs用户,并授予访问gogs数据库权限:

[git@localhost ~]$ mysql -u root -e "create user gogs; grant all privileges on gogs.* to gogs@'%' identified by 'gogs123';"

查看用户gogs是否添加,是否授予所有访问权。

[git@localhost ~]$ mysql -u root -e "select Host,User,Password from mysql.user; show grants for gogs@'%';"

Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具

下载gogs安装包

从gogs的官网 https://gogs.io/docs/installa... 下载对应操作系统的安装包。
Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具

[git@localhost ~]$ wget https://dl.gogs.io/0.11.91/go...
[git@localhost ~]$ tar xvf gogs_0.11.91_linux_amd64.tar.gz

启动gogs并开放防火墙的端口

[git@localhost gogs]$ sudo firewall-cmd --permanent --add-port=3000/tcp
success
[git@localhost gogs]$ sudo firewall-cmd --reload
success
[git@localhost ~]$ /home/git/gogs/gogs web

Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具
打开浏览器输入服务器的ip地址,端口是3000。数据库用户和密码,使用刚才创建的。“应用URL”填写gogs服务器的ip地址。然后点击立即安装。

Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具
之后,进入登录界面,我们可以创建一个新用户。

Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具
进入注册页面,注册用户。

Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具
注册完成,登录进去,我们可以点我的仓库,创建第一个仓库。

Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具

Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具
复制仓库地址,然后再自己的操作系统中下载该仓库

Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具
在仓库中创建一个描述文件,并上传到远程仓库中。

[root@localhost ~]# git clone http://192.168.60.137:3000/user01/example01.git
Cloning into 'example01'...
warning: You appear to have cloned an empty repository.
[root@localhost ~]# cd example01/
[root@localhost example01]# echo "This is example01's README" > README.md
[root@localhost example01]# git add .
[root@localhost example01]# git config --global user.name user01
[root@localhost example01]# git config --global user.email user01@example.com
[root@localhost example01]# git commit -m "add a README.md"
[master (root-commit) 9d7df1d] add a README.md
1 file changed, 1 insertion(+)
create mode 100644 README.md
[root@localhost example01]# git push
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 240 bytes | 240.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
Username for 'http://192.168.60.137:3000': user01
Password for 'http://user01@192.168.60.137:3000':
To http://192.168.60.137:3000/user01/example01.git

  • [new branch] master -> master

远程仓库中可以看到上传成功。
Centos8 安装 Gogs 代码仓库管理工具Centos8 安装 Gogs 代码仓库管理工具

总结

部署Gogs的方式还有可以使用Docker、Vagrant、基于 Kubernetes 的 Helm Charts等方式安装。

查看原文

赞 0 收藏 0 评论 0

刘遄 发布了文章 · 3月11日

Linux操作系统中如何连接Microsoft OneDrive

OneDrive网盘没有为Linux操作系统提供桌面客户端,在本文介绍使用rclone工具连接OneDrive当做本地磁盘使用,可以同步文件到网盘中。

Rclone是一个开源的命令行工具,它能够将本地Linux目录与各种云存储服务同步。可以将文件备份到云存储、从云存储恢复文件、在云服务之间迁移数据、使用多个云存储作为磁盘。

环境

  • 操作系统:Deepin 15.11
  • rclone-v1.52.2
  • rclone-browser-1.2

安装

我们需要安装rclone和rclone-browser工具,我们从github中下载:

bob@bob-PC:~/Desktop$ wget https://github.com/rclone/rcl...
bob@bob-PC:~/Desktop$ wget https://github.com/mmozeiko/R...
bob@bob-PC:~/Desktop$ sudo dpkg -i rclone-*

配置新的远程连接点

输入rclone config进行配置,输入n来创建新的remote,然后输入想给的名字。
在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive
提示选择网盘的类型,这里选择23号OneDrive网盘。
在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive

在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive
后面的"client_id>" 和"client_secret>"保持默认,不需要填写。"edit advanced config?"选择n。"use auto config"选择y。只有浏览器会弹出登录界面,输入onedrive的账号密码,确定。
在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive

在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive

在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive
登录成功之后,会提示Success! ,然后回到命令行界面,接下来还是选择类型,选择1号"OneDrive Personal or Business",后面是确认信息。
在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive

在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive
配置完成。

使用rclone-browser

到此rclone已经配置完成,我们可以使用rclone-browser打开onedrive,然后可以挂载到指定的位置。

打开deepin操作系统的"启动器",然后找到rclone-browser,并打开
在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive
可以看到刚才配置好的网盘,双击点开
在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive
可以看到onedrive网盘里面的文件啦。
在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive
下面我们在桌面创建一个文件夹,作为onedrive的挂载点。
在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive

在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive
打开桌面的OneDrive文件夹,可以看到网盘已经挂载上了。
在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive

在Deepin Linux操作系统中如何连接Microsoft OneDrive在Deepin Linux操作系统中如何连接Microsoft OneDrive

总结

就酱紫可以在Deepin Linux中使用OneDrive同步文件了。

查看原文

赞 0 收藏 0 评论 0

认证与成就

  • 获得 4 次点赞
  • 获得 3 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 3 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

  • 《Linux就该这么学》

    本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材。

注册于 2020-10-22
个人主页被 20.4k 人浏览