linux系统运维学习笔记05

任务计划/远程管理

一、计划任务

1、计划任务概念解析

在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份、定期采集监测数据)。RHEL6系统中默认已安装了at、cronie软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务设置。

2、计划任务分类

一次性计划任务

循环型计划任务

系统级计划任务

用户级计划任务

创建计划任务:用户级别的计划任务

3、Crontab详解

创建计划任务:用户级别的计划任务

[root@qfedu.com ~]# crontab -u 用户 -e

-u 指定用户 默认不写就是root

[root@qfedu.com~]# crontab -e

配置分两部分 拿空格分开

例 :*/1 * * * *    /usr/bin/touch    /tmp/1.txt (每分钟在usr/bin/touch文件下创建一个/tmp/1.txt文件)

第一部分:时间

分钟 小时 日 月 周

范围 0-59 0-23 1-31 1-12 0-7

上面的时间范围可以查看man手册: [root@qfedu.com ~]# man 5 crontab

各种时间写法:

5                   10      ☆    ☆       ☆

5                   10      8     ☆       ☆

1                    5      7      ☆       5

1,5,9              ☆     ☆     ☆      ☆

8-12               ☆     ☆     ☆      ☆

5-20,40          ☆     ☆     ☆      ☆

8-12,20-25     ☆     ☆     ☆      ☆

☆/5                 ☆    ☆     ☆      ☆

ps: ☆ 表示每...

       , 取不同的时间点

       - 表示范围

      */5 每5分钟

第二部分:动作

把上面规定的时间要执行的命令写在这里,当然包括脚本(最常用),命令最好要写绝对路径

查看计划任务:两种方法

1)[root@qfedu.com ~]# crontab -l -u 用户名

查看某一个账户的计划任务

2)[root@qfedu.com ~]#cat /var/spool/cron/root

计划任务删除:两种方法

1)[root@qfedu.com ~]# crontab-r -u 用户名

-r 删除

[root@qfedu.com~]# crontab -e -u tom

2)[root@qfedu.com ~]# rm -f /var/spool/cron/root

二、远程管理

1、ssh服务

安装软件:

openssh-server 提供服务

openssh-clients 客户端

openssh

[root@qfedu.com ~]# yum install -y openssh*

ssh 端口22(SSH协议默认使用端口号22。当你尝试通过SSH连接到远程服务器时,你的SSH客户端会尝试连接到目标服务器的22号端口。)

服务器端:

启动服务:

[root@qfedu.com ~]# systemctl start sshd

查看:

[root@qfedu.com ~]# lsof -i:22

关闭防火墙和selinux:

systemctl stop firewalld

setenforce 0

客户端:

远程登陆管理:

[root@qfedu.com~]# ssh -x 用户名 @服务器端的ip地址 -p 22

(-x:禁用了X11转发,以确保不显示图形界面应用程序

-p 22: 这是SSH的选项之一,用于指定连接的端口号。)

[root@qfedu.com ~]# ssh 服务器端的ip地址

如登陆果账户没有密码,默认不能登录

无密码登陆(ssh密钥认证)

client(客户端):

产生公钥和私钥:

[root@qfedu.com~]#ssh-keygen //一路回车

拷贝公钥给对方:

[root@qfedu.com ~]# ssh-copy-id -i 服务器端的ip地址

直接执行远程命令:

[root@qfedu.com ~]# ssh 服务器端的ip地址 "reboot"

远程拷贝:

客户端ip:192.168.48.129 服务器端ip:192.168.48.130

[root@qfedu.com ~]# scp /tmp/1.txt 192.168.48.130:/tmp/ (将本机/tmp目录下的1.txt文件传给服务器端/tmp目录下)

[root@qfedu.com ~]# scp 192.168.48.130:/tmp/1.txt /tmp/ (将服务器端/tmp目录下的1.txt文件传到本机/tmp目录下)

拷贝目录加 -r 选项

修改端口号

[root@qfedu.com ~]# vim /etc/ssh/sshd_config Port 22

[root@qfedu.com ~]#systemctl restart sshd

2、rz sz命令

安装

root账号登陆后执行以下命令:

[root@qfedu.com~]#yum install -y lrzsz

使用

sz命令发送文件到本地:

[root@qfedu.com ~]#sz filename

rz命令本地上传文件到服务器:

[root@qfedu.com ~]# rz

执行该命令后,在弹出框中选择要上传的文件即可。

三、Jumpserver详解

1、环境配置

[root@sdp-dev ~]#setenforce 0

[root@sdp-dev ~]#systemctl stop firewalld.service

修改字符集,否则可能报input/outputerror的问题,因为日志里打印了中文

[root@sdp-dev ~]# localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 (定义新的区域设置(locale),它将系统的区域设置设置为"zh_CN.UTF-8",表示系统将使用简体中文并采用UTF-8字符编码。)

[root@sdp-dev~]#export LC_ALL=zh_CN.UTF-8 (LC_ALL是一个特殊的环境变量,它用于控制整个系统的区域设置,这里将其设置为简体中文。)

[root@sdp-dev~]#echo 'LANG="zh_CN.UTF-8" '>/etc/locale.conf (将区域设置的配置写入到/etc/locale.conf文件中,将系统的默认语言设置为"zh_CN.UTF-8",确保系统在启动时使用正确的语言设置。)

[root@sdp-dev ~]#yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git

[root@sdp-dev ~]# wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz (使用wget工具从指定的URL下载Python 3.6.1的源代码压缩文件(Python-3.6.1.tar.xz),这是Python编程语言的特定版本。)

[root@sdp-dev ~]#tar xf Python-3.6.1.tar.xz && cd Python-3.6.1 (使用tar命令来解压缩下载的Python源代码文件。 cd Python-3.6.1:一旦解压完成,它将当前工作目录切换到Python源代码的目录,这是为了接下来的配置、编译和安装步骤。)

[root@sdp-dev python-3.6.1]# ./configure && make && make install

( ./configure:这个命令运行Python的配置脚本,它会检查系统环境并准备Python进行编译。它会生成Makefile,其中包含了编译Python所需的参数和选项。

make:一旦配置完成,这个命令会编译Python 3.6.1的源代码。它会将源代码转化为可执行的二进制文件。

make install:最后,这个命令会安装已编译的Python 3.6.1二进制文件和相关文件到系统中。这将使Python 3.6.1可用于系统的命令行和开发环境中。)

这里必须执行编译安装,否则在安装 Python 库依赖时会有麻烦.

[root@sdp-dev Python-3.6.1]#cd /opt

[root@sdp-dev opt]# python3  -m venv py3 (使用Python 3的venv模块创建了一个新的Python虚拟环境。)

[root@sdp-dev opt]# source /opt/py3/bin/activate (激活刚刚创建的Python虚拟环境。) (py3) 

(py3)[root@sdp-dev opt]#git  clone  git://github.com/kennethreitz/autoenv.git (从GitHub上克隆名为autoenv的代码库。)

正克隆到‘autoenv'...

remote:Enumerating objects: 671, done.

remote: Total 671 (delta 0), reused 0 (delta 0), pack-reused 671

接收对象中:100%(671/671),103.92KiB1115.00 KiB/s, done.

处理 delta 中:100% (356/356), done.

(py3)[root@sdp-dev opt]#echo 'source /opt/autoenv/activate.sh' >> ~/.bashrc

(使用echo命令将文本字符串'source /opt/autoenv/activate.sh'追加到当前用户的

.bashrc文件中。.bashrc是一个Shell配置文件,它包含了在每次启动终端会话时自动执行的命令。)

(py3) [root@sdp-dev opt]#source ~/.bashrc

(立即应用对.bashrc文件的更改,而不需要重新登录或重新启动终端。)

2、下载Jumpserver

(py3) [root@sdp-dev opt]#git clone https://github.com/jumpserver/jumpserver.git && cd  jumpserver && git checkout master (从 GitHub 上克隆 "jumpserver" 存储库到本地,然后进入存储库目录,并将工作分支切换到 "master" 分支,以便在 "jumpserver" 存储库上进行开发或其他操作。)

正克隆到'jumpserver'

remote: Enumerating objects: 79, done.

remote: Counting objects: 100% (79/79), done.

remote: Compressing objects: 100% (68/68), done.

remote:Total 41282(delta 19),reused20 (delta5), pack-reused 41203接收对象中:100%(41282/41282),52.05 MiB179.00KiB/s, done.

处理 delta 中:100%(28176/28176),done. 已经位于‘master'

3、安装所需的python modules

(在Python中,模块(Modules)是一种组织Python代码的方式。模块的使用可以帮助你组织代码,提高代码的可重用性,并使得项目更易于管理。)

(py3) [root@sdp-dev jumpserver]# echo "source /opt/py3/bin/activate" > opt/jumpserver/.env

(这个命令的目的是将文本 "source /opt/py3/bin/activate" 写入名为 .env 的文件中,位于您的项目目录 opt/jumpserver/ 内。在这种上下文中,.env 文件通常用于设置环境变量或加载虚拟环境。source /opt/py3/bin/activate 的目的是激活名为 py3 的 Python 虚拟环境。)

(py3) [root@sdp-dev jumpserver]# cd requirements/

(py3)[root@sdp-dev requirements]#yum -y install $(cat rpm_requirements.txt)

($(cat rpm_requirements.txt) : 这部分命令从名为 rpm_requirements.txt 的文件中读取软件包名称,并将这些软件包一次性安装到系统中。cat 命令用于显示文件内容,然后 $(...) 语法将文件的内容传递给 yum 命令以安装软件包。-y 参数用于自动确认安装。)

(py3)[root@sdp-dev requirements]#pip install --upgrade pip

( 这个命令用于升级 pip,Python 包管理工具,以确保它是最新版本。)

(py3)[root@sdp-dev requirements]#pip install -r requirements.txt

(这个命令从名为 requirements.txt 的文件中读取 Python 包的列表,并使用 pip 安装这些包。通常,这是一个项目的依赖项清单,确保项目所需的所有 Python 包都被正确安装。)

4、安装Redis

(Redis(Remote Dictionary Server)是一个开源的高性能内存键值存储数据库系统,它的设计目标是提供一个快速、轻量级、灵活以及可扩展的数据存储解决方案。)

(py3)[root@sdp-devrequirements]# yum -y install  redis

(py3)[root@sdp-dev requirements]# systemctl enable redis

(py3)[root@sdp-dev requirements]# systemctl start redis

5、安装MySQL

(MariaDB是一个MySQL分支因此在下面的命令中,mariadb 命令可以用于与MariaDB数据库交互。如果使用的是标准的MySQL数据库,应该使用 mysql 命令来进行交互。)

(py3)[root@sdp-dev requirements]# yum -y installmariadb mariadb-devel mariadb-

server

(py3)[root@sdp-dev requirements]# systemctl enable mariadb

(py3) [root@sdp-dev requirements]#systemctl start mariadb

(py3) [root@sdp-dev requirements]#mysql

( 这个命令用于启动MySQL命令行客户端,以便用户可以与MariaDB数据库交互。)

MariaDB[(none)]> create database jumpserver default charset 'utf8';

(这个命令用于在MariaDB中创建一个名为 jumpserver 的数据库。

default charset 'utf8' 指定了数据库的默认字符集为UTF-8,这是一种常见的字符集,支持多种语言和字符编码。 )

MariaDB [(none)]> grant all on jumpserver.* to 'jumpserveradmin'@'127.0.0.1'

(这个命令授予了用户 'jumpserveradmin'  对jumpserver数据库的所有权限。 

'jumpserveradmin'@'127.0.0.1'  指定了授权的用户名和允许访问的主机。这表示

'jumpserveradmin' 用户只能从本地主机(127.0.0.1)访问数据库。)

MariaDB [(none)]>flush privileges;

(这个命令用于刷新MariaDB的权限表,以便最新的授权更改生效。)

MariaDB [(none)]> \q

(这个命令用于退出MariaDB命令行客户端。)

6、配置Jumpserver

(py3)[root@sdp-dev requirements]#cd ..

(py3)[root@sdp-dev jumpserver]#cp config_example.yml config.yml

(这个命令用于复制名为 config_example.yml 的配置文件到一个新的文件 config.yml。通常,config_example.yml 包含了一些示例配置,用户可以在config.yml 中进行自定义设置。)

(py3) [root@sdp-dev jumpserver]#SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`

(这个命令生成一个名为 SECRET_KEY的随机密钥,长度为50个字符。

/dev/urandom是一个Linux系统上的伪随机数生成器设备。

tr -dc A-Za-z0-9用于过滤并只保留字母和数字字符。

head -c 50用于截取前50个字符,生成一个50字符的密钥。)

(py3)[root@sdp-dev jumpserver]#echo SSECRET_KEY

vFjo4WEMRWNinxMconEXodf3VeEaRStkDzo6SpIfNxphYEEMUZ

(这个命令用于验证之前生成的 SECRET_KEY值)

(py3) [root@sdp-dev jumpserver]# echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc

(这个命令将 SECRET_KEY 的值追加到当前用户的 ~/.bashrc 配置文件中,)

(py3) [root@sdp-dev jumpserver]#BOOTSTRAP_TOKEN='cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`

(这个命令生成一个名为BOOTSTRAP_TOKEN的随机令牌,长度为16个字符。与生成 SECRET_KEY的方式类似。)

(py3) [root@sdp-dev jumpserver]#echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc

(这个命令将之前生成的 SECRET_KEY 的值追加到当前用户的 ~/.bashrc 配置文件中)

(py3) [root@sdp-dev jumpserver]# echo $BOOTSTRAP_TOKEN

yBCVQ9WHA9phTZ21

(这个命令用于验证之前生成的BOOTSTRAP_TOKEN的随机令牌)

下面这些命令主要用于配置文件/opt/jumpserver/config.yml的自动化配置和信息显示。

(py3)[root@sdp-dev jumpserver]# sed -i "s/SECRET_KEY:/SECRET_KEY: $SECRET_KEY/g” /opt/jumpserver/config.yml

(py3)[root@sdp-devjumpserver]#sed -i "s/BOOTSTRAP_TOKEN:/BOOTSTRAP_TOKEN: $BOOTSTRAP_TOKEN/g" /opt/jumpserver/config.yml

(py3)[root@sdp-dev jumpserver]# sed -i ''s/# DEBUG: true/DEBUG: false/g" /opt/jumpserver/config.yml

(py3)[root@sdp-dev jumpserver]# sed -i "s/# LOG_LEVEL: DEBUG/LOG_LEVEL: ERROR/g" /opt/jumpserver/config.yml

(py3)[root@sdp-dev jumpserver]# sed -i "s/# SESSION_EXPIRE_AT_BROWSER_CLOSE: false/SESSION_EXPIRE_AT_BROWSER_CLOSE: true/g" /opt/jumpserver/config.yml

(py3) [root@qfedu ~]# sed -i "s/DB_PASSWORD: /DB_PASSWORD: $DB_PASSWORD/g" /opt/jumpserver/config-yml

(py3)[root@sdp-devjumpserver]#echo -e "\033[31m 你的SECRET_KEY是SSECRET_KEY\033[0m"

你的SECRET_KEY是VFjo4WEMRwNinXMconEXodf3VeEaRStkDzo6SpIfNxphYEEMUZ

(py3) [root@sdp-dev jumpserver]#echo -e "\033[31m 你的BOOTSTRAP_TOKEN是$BOOTSTRAP_TOKEN \033[0m"

你的BOOTSTRAP_TOKEN是 yBCVQ9WHA9phTZ21

(py3)[root@sdp-dev jumpserver]# vi config.yml

DB_ENGINE:mysql

DB_HOST:127.0.0.1

DB_PORT:3306

DB_USER:jumpserveradmin

DB_PASSWORD: jumpserverpwd

DB_NAME:jumpserver

7、启动/关闭Jumpserver

(py3) [root@sdp-dev jumpserver]# ./jms start

(py3) [root@sdp-dev jumpserver]# ./jms stop

后台启动

(py3) [root@sdp-dev jumpserver]#./jmsstart -d

8、部署koko

Koko 是 JumpServer 连接字符协议的终端组件,支持 SSH、TELNET、MySQL、Redis 等协议。

支持终端管理,默认port为2222

[root@sdp-dev ~]# systemct1 start docker

[root@sdp-dev ~]#Server_IP=192.168.20.32

(将IP地址"192.168.20.32"分配给名为Server_IP的变量)

[root@sdp-dev~]# echo $BOOTSTRAP_TOKEN

(显示变量BOOTSTRAP_TOKEN的值。)

[root@sdp-dev~]# BOOTSTRAP_TOKEN=YBCVQ9WHA9phTZ21

(将Bootstrap Token设置为"YBCVQ9WHA9phTZ21")

[root@sdp-dev ~]# docker run --name jms_koko -d -p 2222:2222 -p 5000:5000 -e CORE_HOST=http://Server_IP:8080 -e BOOTSTRAP_TOKEN=SBOOTSTRAP_TOKEN jumpserver/jms_koko:1.5.5

(运行名为jms_koko的Docker容器,它将容器内部的端口2222和5000映射到主机的相应端口,并使用了之前设置的Server_IP和BOOTSTRAP_TOKEN作为环境变量。容器使用了名为jumpserver/jms_koko:1.5.5的镜像。)

9、部署guacamole

基于HTML5和JavaScript的VNC查看器

[root@sdp-dev ~]# docker run --name jms_guacamole -d -p 8081:8081 -e JUMPSERVER_SERVER=http://$Server_IP:8080 -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN jumpserver/jms_guacamole:1.5.5

(运行一个名为 "jms_guacamole" 的 Docker 容器,映射了端口8081,并配置了两个环境变量,分别是 "JUMPSERVER_SERVER" 和 "BOOTSTRAP_TOKEN",以便容器能够与名为 "JUMPSERVER_SERVER" 的服务器进行通信,并使用 "BOOTSTRAP_TOKEN" 进行身份验证。)

10、部署luna

与nginx结合支持Web Terminal前端

[root@sdp-dev ~]#cd /opt/

[root@sdp-dev opt]# wget https://github.com/jumpserver/luna/releases/download/1.5.5/luna.tar.gz

[root@sdp-dev opt]# tar xf luna.tar.gz

[root@sdp-dev opt]# chown -R root:root luna

(用于更改 "luna" 目录的所有文件和子目录的所有者和组为 "root:root"。 

-R 选项表示递归地更改所有文件和子目录的权限。)

11、配置nginx

[root@sdp-dev opt]# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel

[root@sdp-dev opt]# rz

(使用rz命令上传nginx的源码包)

[root@sdp-dev opt]#tar xf nginx-1.14.2.tar.gz

[root@sdp-dev opt]#cd nginx-1.14.2

[root@sdp-dev opt]#./configure --prefix=/usr/local/nginx && make && make install

[root@sdp-dev opt]#cd /usr/local/nginx/conf/

[root@sdp-dev conf]#vim /usr/local/nginx/conf/nginx.conf

server [

listen 80;

client_max_body_size 100m; #录像和文件上传大小限制

#charset koi8-r;

#access_log logs/host.access.log main;

location /ui/ {

try_files $uri / /index.html;

alias /opt/lina/;

}

location /status {

vhost_traffic_status_display;

vhost_traffic_status_display_format html;

}

location /luna/ {

try_files $uri / /index.html;

alias /opt/luna/; #luna路径,如果修改安装目录,此处需要修改

}

location /media/ { #静态文件处理

add_header Content-Encoding gzip;

root /opt/jumpserver/data/; #录像位置,如果修改安装目录,此处需要修改

}

location /static/ {

root /opt/jumpserver/data/;

}

location /koko/ { #当我们请求koko,他会通过proxy_pass进行反向代理

proxy_pass http://localhost:5000;

proxy_buffering off;

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

access_log off;

}

location /guacamole/{

proxy_pass http://localhost:8081/ ;

proxy_buffering off;

proxy_http_version 1.1;

proxy_set_header upgrade $http_upgrade;

proxy_set_header Connection $http_connection;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

access_log off;

}

location /ws/{

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass http://localhost:8070;

proxy_http_version 1.1;

proxy_buffering off;

proxy_set_header upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

}

location /api/{

proxy_pass http://localhost:8080;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

location /core/ {

proxy_pass http://localhost:8080;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

location / {

rewrite ^/(.*)$ /ui/$1 last;

}

12、访问jumpserveer,进行验证

访问 http://自己的IP:80

会发现当我们访问80端口,他会自动进行跳转到lina提供给我们的更好的可视化界面

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值