-
一、MobaXterm工具 MobaXterm是一款功能强大的远程连接工具,可以用于连接到各种类型的服务器,包括Linux、Windows和MacOS。它支持多种协议,包括SSH、RDP、VNC和Telnet。 使用MobaXterm可视化服务器桌面 MobaXterm可以通过X11转发功能来可视化服务器桌面。X11是一种图形协议,允许在本地计算机上显示远程服务器的图形界面。 二、MobaXterm工具可视化服务器目录 使用MoBaXterm工具常规的可视化如下所示,在此工具的左侧目录栏中可以清晰看到服务器上的目录架构: 三、MobaXterm工具可视化服务器桌面 进入MobaXterm界面后,在服务器终端输入下面命令: nauilus 回车等待一会,就会弹出如下的服务器桌面(是一个单独的窗口),可以在服务器桌面任意的查看和操作文件。 ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/qq_40280673/article/details/137018743
-
介绍: 通过Zabbix系统监控记录应用在服务器上进程内存的使用情况,以便于分析服务器的性能瓶颈,首先编写shell脚本来获取服务器内存资源使用率最大的进程,然后通过Zabbix对这些进程的内存资源使用情况进行监控并收集数据。方法: 第一种方法:使用free命令可以获得当前内存使用情况,Centos6的命令和OS7的命显示有所不同,区别在于CentOS7多显示了/+buffers/cache 第二种方法:使用/proc/meminfo文件把系统状态信息很详细的显示出来,使用代码: less /proc/meminfo参数: Mem/total值:代表总的物理内存 Mem/available值:代表系统还剩下多少内存可用-其实大概等于buff/cache+free的值 Mem/used值:代表已经使用的内存(total-free)包含buffers和cached分配出去的量(与7used区别) (-/+ buffers/cache)/used值:total-free-buffers-cached (-/+ buffers/cache)/free值:free+buffers+cached 脚本:#touch memroy_status.sh#!/bin/bashMemTotal(){awk'/^MemTotal/{print $2}/proc/meminfo'}MemFree(){awk'/^MemFree/{print $2}/proc/meminfo'}Dirty(){awk'/^Dirty/{print $2}/proc/meminfo'}Buffers(){awk'/^Buffers/{print $2}/proc/meminfo'}$1 同前俩次文章一样可以添加类似的权限 chmod a+x memory_status.sh执行脚本,./memory_status.sh Memtotal/MemFree/Diry/Buffers。即可显示对应结果。当业务需求对特定服务器进行监控时,可以通过编写脚本获取各个进程占用系统资源的信息,从而使用Zabbix采集这些数据并对特定进程进行监控,如Zabbix监控内存信息收集等等。
-
介绍: 在日常的运维工作中,mysql数据是相当重要的一部分,使用Zabbix进行监控Mysql状态数据收集,与采集CPU、内存、I/O、磁盘等信息类似。步骤: 先yum安装mariadb-server mariadb:yum -y install mariadb-server mariadb。 启动mariadb:systemctl start mariadb。 使用空密码登录mysql控制台可以执行增删改查等操作,登录mysql后回介绍当前的版本信息可以通过\q来退出当前操作。 mysqladmin命令可以管理mysql,看mysql的状态,也可以改密码:mysqladmin status。 mysqladmin extended-status来查看扩展状态信息。 Zabbix对mysql的性能监控,通过mysql状态值将这些状态值传递给服务器并绘制成图片,这样可以观察mysql 的工作状态。参数:这里介绍的参数将在下方脚本中用到也是比较常见的参数,所以很重要! Bytes_sent 发送字节数 Bytes_received 接受的字节数 Com_delete 执行删除的个数 Com_rollback 执行回滚的个数 Com_insert Mysql执行插入的个数 Com_update Mysql执行更新的个数 Slow_queries 慢查询语句的个数脚本: vim zabbix_mysql_status.sh#!/bin/bash#mysql for zabbixuptime(){mysqladmin status | awk '{print $2}'}Slow_queries(){mysqladmin status | awk '{print $9}'}Com_insert(){mysqladmin extended-status |awk '/\<Com_insert\>/{print $4}'}Com_delete(){mysqladmin extended-status |awk '/\<Com_delete\>/{print $4}'}Com_update(){mysqladmin extended-status |awk '/\<Com_update\>/{print $4}'}Com_select(){mysqladmin extended-status |awk '/\<Com_select\>/{print $4}'}Com_commit(){mysqladmin extended-status |awk '/\<Com_commit\>/{print $4}'}Com_rollback(){mysqladmin extended-status |awk '/\<Com_rollback>/{print $4}'}Bytes_sent(){mysqladmin extended-status |awk '/\<Bytes_sent>/{print $4}'}Bytes_received(){mysqladmin extended-status |awk '/\<Bytes_received>/{print $4}'}Com_begin(){mysqladmin extended-status |awk '/\<Com_begin>/{print $4}'}$1权限: chmod a+x zabbix_mysql_status.sh来赋予权限后可以直接查看当前的mysql数据信息,比如:./zabbix_mysql_status.sh uptime/Com_delete/Com_insert/slow_queries和上面代码介绍过的com_xxx或bytes_xxx来实现。
-
介绍: 常见的获取TCP连接状态的方法有俩种,一种是netstart命令,另一种是ss命令。通过netstat来获取tcp的状态信息,netstat -an | grep ^tcp 或 ss -an | grep ^tcp 通过ss来统计tcp的状态连接数。 ss -an | grep ^tcp | awk '{tcp_connect_status[$2]++} END {for i in top_connect_status) {print i,tcp_connect_status[i]}}' 结果显示当前的tcp状态连接数是多少。TCP协议: tcp被称为可靠的数据传输协议,主要是通过许多机制来实现的,其中最重要的就是三次握手和四次挥手的功能。如图: 常见的TCP状态信息描述如下: CLOsed socket 没有被使用 无连接。 CLOSING 服务器和客户端同时关闭连接,等待远程tcp的连接终止请求确认。 LISTEN 监听状态,等待从任何远程端口TCP和端口的连接请求。 SYN_RECV 接收到SYN报文。 SYN_SENT 已经发送SYN报文,发送完一个连接请求后等待一个匹配的连接请求。 LAST_ACK 远程关闭,当前socket被动关闭后发送FIN报文,等待对方ACK报文。 FIN_WAIT_1 等待远端TCP的连接终止请求,或者等待之前发送的连接终止请求的确认。 FIN_WAIT_2 等待远程TCP的连接终止请求。编写TCP连接数的 shell脚本: vim zabbix_tcp_connect_status.sh#!/bin/env bashListen(){ ss -an |grep '^tcp' |grep 'LIsten' |wc -lSYN_RECV(){ ss -an |grep '^tcp' |grep 'SYN[_-]RECV' wc -l}}ESTABLISHED(){ ss -an |grep '^tcp' |grep 'estab' |wc -l }TIME_WAIT(){ ss -an |grep '^tcp' |grep'TIME[_-]WAIT' |wc -l}$1 也可以用代码 ss -an |grep '^tcp' |grep 'linten' |wc -l 来看下状态数量 或者 ss -an |grep '^tcp' |grep 'linten'来看一下当前的连接状态可以具体看到ip地址等信息。也可以给脚本加上权限,chmod a+x zabbix_tcp_connect_status.sh 同理 ./zabbix_tcp_connect_status.sh listen 或 /zabbix_tcp_connect_status.sh TIME_WAIT 或 /zabbix_tcp_connect_status.sh ESTABLISHED 。 当服务器的连接数很大,统计TCP状态也很频繁时,使用Zabbix监控TCP状态信息是一个很好的方案。
-
介绍: 在开头时和大家说过,三剑客最厉害的就是awk,awk是由创建者的名字来命名的。awk是一种报表生成的工具,对文件内容进行各种排版的操作,它允许您创建简短的程序,这些程序的功能包括读入输入文件,数据排版,处理数据。awk是一种过程式编程语言或脚本语言解释器,支持条件判断、数组、循环等功能。 awk的处理文件和数据的流程是从第一行开始到最后一行,匹配的特定模式的行,并在这些行上进行你想要的操作,如果没有指定处理动作,则把匹配的行显示到标准输出;如果没有指定模式,则所有被操作所执行的行都被处理。 awk有俩个特殊的模式:begin和end,它们分别被防止在没有读取任何数据之前及在所有的数据读取完完成以后执行。原理: awk格式为: awk 'begin{commands} pattern {commands} END {commands}' begin的语句在awk开始输入流中读取之前被执行,这是一个可选的语句,如变量初始化、打印输出表格的表头等情况。end语言在awk处理完所有文件后被执行,对所有行的数据进行分析,之后打印出分析结果这类操作,都可以在end语句中完成,他也是一个可选语句。 pattern语句中的通用命令是最重要的部分,同样是一个可选的语句。如果没有提供pattern语句则默认执行{print},即可打印读取的每一行,awk读取的每一行都会执行该语句.语法: awk 'pattern' filename 或 awk '{action}' filename 或 awk 'pattern {action}' filename 例如: cat /etc/passwd awk '/root/' /etc/passwd 结果就会显示在文件 /etc/passwd中匹配到root的行。同样awk也支持打印, 比如: echo 123 | awk '{print "hello,awk"}' 结果就是hello awk内直变量: awk提供乐非常丰富的内直变量,了解这些内直变量也是非常重要的,相对于grep和sed而言,awk优于他们原因是支持对记录和字段的处理。这些内直变量在用awk工具的同事也可以被修改或引用,比如说,可以使用NR这个内置的变量改变模式匹配中指定的工作范围,也可以通过修改记录的分隔符RS让一个特殊字符作为记录的分隔符,而不是换行符。
-
介绍: sed一次处理一行内容,处理时把当前处理的行存储在临时缓冲区中,接着用sed命令处理缓冲区中的内容,处理完成后,再把缓冲区的内容输出到屏幕,接着处理下一行,这样不断重复,直到把缓冲区中的内容全部输出到屏幕。接着处理下一行,这样不断的重复反复,直到文件末尾,除非使用重定向存储输出,否则文件内容并不改变,sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序,sed的缓冲区分别为:模式空间和保持空间。 一般情况下,sed首先把第一行内容装入模式空间,处理后输出到屏幕,然后继续把第二行装入模式空间,再处理输出到屏幕,依次循环,直到结束。语法: sed从文件读取数据,如果没有输入文件,则默认对标准的输入进程数据进行处理,sed可以将数据进行替换、删除、新增、选取等功能。首先了解下sed的语法格式。 sed [options] command file1 file2 这是sed的调用方法,再该方法中将编辑指令直接放选项后面,这是最常见的方法,当执行一些较为复杂的编辑年纪操作时,使用的编辑命令可能会很长,这时通常将编辑指令放入一个脚本文件中,就会用到第二种方法,sed [options] -f scriptfile来调用sed文件。特点:(1)非交互,基于模式匹配的过滤及修改文本。(2)脚本化,再shell编程中sed比vim方便。(3)可对文本实现输出,删除,复制,剪切等编辑。常见参数: 和grep相比,常见的选项如,-r支持扩展正则表达式、-h输出sed的帮助信息、-i直接修改读取的文件内容,而不是由屏幕输出、d 删除、i\输出内容 i的后面可以接字符常、p 打印 将处理过的字符常打印出来、q退出sed、p打印模式空间的第一行。正则表达式: 和grep相比,sed再文件中查找模式时,也可以使用正则表达式和各种元字符。正则表达式是括再斜杠间的模式,用于查找和替换。支持的元字符集如:^ [] [^] . *等等。使用的扩展元字符集如:?、+、{} ()|。 例如,删除/etc/passwd文件第四行。 sed '4d'passwd最后同样是给大家留下一个小问题:用sed命令将文本12345.txt写成倒叙。上期答案: 正则表达式和扩展表达式类似,但是扩展表示更加简单,正则表达式需要用\来转移字符,来表示某些字符的意思,而扩展表示则不需要。
-
介绍: linux中的三剑客grep、sed、awk作为强大的文本搜索工具,你知道哪个是最厉害啊么?当然是awk。今天我们来聊一聊grep。grep和正则表达式息息相关,它能用正则表达式来搜索文本,在文件中全局查找指定的正则表达式,并打印所有包含该表达式的行。通常grep有三种版本,即grep、egrep和fgrep。egrep为扩展的grep,其支持更多的正则表达式元字符,fgrep则为快速grep它按照字面意思解释所有字符。命令及格式: grep [options选项] PATTERN [FILENAME FILENAME...] 例如: grep 'lizeyu' /etc/passwd grep 'bash shell' /etc/test 结果:找到匹配模式:返回的退出状态是0、没找到匹配文件返回的退出状态是1、找不到指定文件返回的退出状态为2。 grep命令输入可以来自标准的输入或管道,而不仅仅是文件的使用比如: ps aux | grep 'sshd' ll |grep '^d' grep的选项参数常见的我们来举例学习, -i忽略字符的大小写,-l只列出匹配行所在的文件名,-n在每一行前面加上它在文件中的相对行号,-c显示成功匹配的行数,-s禁止显示文件不存在或文件不可读的错误信息,-o仅显示匹配的字符串文件本身。注意: 针对搜索字符常的选项,使用正则表达式时必须用单引号括起来,避免于shell的元字符冲突,结合grep与正则表达式,能快速的找到希望匹配的字符常和行,提高工作效率。grep命令和正则表达式: grep命令结合正则表达式使得linux运维工作不仅简单化,而且还能高效的使用。 例如: 使用egrep匹配文件中root字符串,egrep 'root' /etc/passwd /etc/shadow /etc/hosts 使用egrep列出匹配行的文件名,egrep -l 'root' /etc/paswd /etc/shadow /etc/hosts 使用egrep匹配ip地址,egrep '({0-9},{1,3}\.){3}{0-9}{1,3}'/etc/sysconfig/network-scripts/ifcfg-eth0最后给大家提一个问题,正则表达式和扩展正则表达式的区别是什么? 下期揭晓。
-
概念: 数组中有限个相同类型的变量用一个名字命名,然后用编号区分它们,用于区分不同元素的编号称为数组下标,数组的元素有时也称为下标变量。类型: 数组分为普通数组和关联数组。普通数组中的索引都是整数,关联数组的数组索引可以用任意的文本。关联数组使用之前需要声名,关联数组于普通数组的最大区别就是,他是由特定格式的键值对组成的,。 普通数组中的数组元素的索引从0开始编号,获取数组中的元素要利用索引。索引也就是下标,可以是算数表达式,其结果必须是一个整数。 例:普通数组的定义 zeyuli={linux shell awk openstack docker} 对应中的单词下标就是 0 1 2 3 4 关联数组和普通数组所不同的是,它的索引下标可以是任意的整数和字符串. 例:关联数组的定义 zeyuli=([name]=lizeyu [sex]=male [age]=23 对应中的下标就是name sex age 形式可以为任意的字符串不必为整数的编号。 综上所述,在shell中,数组分为普通数组和关联数组,用户定义的是普通数组,如需使用关联数组需要先声明在使用,用户声明关联数组使用-A的参数,通常情况下shell解释器隐藏式声明普通数组,用户无需操作,用户要显示声明的普通数组,需要用-a的参数。 例如:声明普通数组的方法 #declare -a array 声明关联数组的方法 #declare -A array 定义: 在shell中,定义一个数组有很多的方法,需要先按照命令规则给数组命名,然后再定义数组的值,数组的定义方法有:直接定义数组、下标定义数组、间接定义数组和从文件中读入定义数组,一共四种方法。 直接定义数组是用小括号将变量值括起来赋值给数组变量,每个变量的值之间要用空格进行分割。下标定义数组使用小括号将变量值括起来,同时采用键值对的方式来赋值。间接定义数组是分别通过定义数组的方法来定义,从文件读入定义数组是使用命令的输出结果作为数组的内容。
-
确认license状态登录CI业务面》资源》确认设备license状态正常确认设备建链状态登录设备通过命令行查看http2协议命令# 进入诊断视图 sys diagnose # 查看建链状态 dis http2-client item 4 其中uiDestPort为27371的是与分析器建链信息,若uiDestPort均不是27371,排查配置 ucConnStatus为建链状态,含义为:正常应该是3 , CONN_UP 0 , CONN_IDLE 初始化状态,未发起连接 1 , CONN_GETCERT 证书认证 2 , CONN_INITRETRY 等待重连状态 3 , CONN_UP 已建立连接--------建链正常,对应分析器ss -anp|grep 27371可查看ESTAB状态 4 , CONN_RECONN 失败,等待重连--------可能是南向公网IP带宽超了被限流 5 , CONN_ABORT 超过重试次数后终止telemetry协议命令sys diagnose d g c c如果建链状态不正常,确认网络是否是通的在设备上pingCI南向地址,看是否能ping通ping CI南向IP 如果ping不通,需要客户排查网络如果能ping通,尝试Telnet端口,看端口是不是通的telnet 南向ip 27371/30003 如果端口不通,需要客户排查是否存在防火墙等未放通对应端口查看数据上报状态sys # ap查看wmi状态 display wmi status # 交换机查看smi状态 display smi status查看druid表中是否有数据初始版本R21.1前su ossadm source /opt/oss/manager/agent/bin/engr_profile.sh python from util import common, httpclient client = httpclient.CommonHttpClient(common.getLocalIP(),32018,isHttps=True,gzip=False) client.post("/rest/odae/v1/queryengine/aql/query",{"aql":"ci_campusclient_clientkpi|where __time>ago(1d) and usermac='xx-xx-xx-xx-xx-xx'|distinct usermac,apmac,tenantId,siteId"})初始版本R21.1及以后su ossadm source /opt/oss/manager/bin/engr_profile.sh export SSL_ROOT=/opt/oss/manager/etc/ssl/ export CIPHER_ROOT=/opt/oss/manager/etc/cipher/ python from util import common, httpclient client = httpclient.CommonHttpClient(common.getLocalIP(),32018,True,False) client.post("/rest/odae/v1/queryengine/aql/query",{"aql":"ci_campusclient_clientkpi|where __time>ago(1d) and usermac='xx-xx-xx-xx-xx-xx' |distinct usermac,apmac,tenantId,siteId"});查看kafka中是否有数据grep "[usermac]" /srv/BigData/hadoop*/kafka/*clientkpi*/*.log数据库查看实时流任务运行状态连接数据库初始版本R21.1之前su - dbuser zsql odaesparkdispservicedb/XXXXXXX@127.0.0.1:32081初始版本R21.1及以后export dbName='odaesparkdispservicedb';export instance_name=`grep -A 12 ${dbName} /opt/zenith/ResourcePool.json|grep instance_name|awk -F\" '{print $4}'`;export IP=`grep LSNR_ADDR /opt/zenith/data/${instance_name}/cfg/zengine.ini|awk '{print $3}'|awk -F \, '{print $NF}'`;export port=`grep LSNR_PORT /opt/zenith/data/${instance_name}/cfg/zengine.ini|awk '{print $3}'`;export ZenithDBPasswd=`grep -A 12 $dbName /opt/zenith/ResourcePool.json|grep password|awk -F\" '{print $4}'`;export pwd=`su - ossadm -c ". /opt/*/manager/bin/engr_profile.sh;python -c \"from util import ossext;print(ossext.Cipher.decrypt('${ZenithDBPasswd}'))\""`;su - dbuser -c "zsql ${dbName}/${pwd}@${IP}:${port}"查询任务状态select * from TASK_RECORD_V2_TBL where APPLICATIONNAME = 'campus_wlan_etl_v2' and PIPELINENAME like '%campusInsight_realtime_wlan_client_original%' order by CREATETIME desc limit 10;
-
第一类:数字性循环 ----------------------------- for1-1.sh #!/bin/bash for((i=1;i<=10;i++)); do echo $(expr $i \* 3 + 1); done ----------------------------- for1-2.sh #!/bin/bash for i in $(seq 1 10) do echo $(expr $i \* 3 + 1); done ----------------------------- for1-3.sh #!/bin/bash for i in {1..10} do echo $(expr $i \* 3 + 1); done ----------------------------- for1-4.sh #!/bin/bash awk 'BEGIN{for(i=1; i<=10; i++) print i}' 第二类:字符性循环 ----------------------------- for2-1.sh #!/bin/bash for i in `ls`; do echo $i is file name\! ; done ----------------------------- for2-2.sh #!/bin/bash for i in $* ; do echo $i is input chart\! ; done ----------------------------- for2-3.sh #!/bin/bash for i in f1 f2 f3 ; do echo $i is appoint ; done ----------------------------- for2-4.sh #!/bin/bash list="rootfs usr data data2" for i in $list; do echo $i is appoint ; done 第三类:路径查找 ----------------------------- for3-1.sh #!/bin/bash for file in /proc/*; do echo $file is file path \! ; done ----------------------------- for3-2.sh #!/bin/bash for file in $(ls *.sh) do echo $file is file path \! ; done ———————————————— 版权声明:本文为CSDN博主「BabyFish13」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/BabyFish13/article/details/52981110
-
一:实验环境1.一台云服务器2.服务器重装系统(如果第一次使用云服务器可忽略)3.finalshell远程连接二:项目部署1.安装LAMP架构1.关闭防火墙[root@ecs-20200608 ~]# iptables -L ----列出防火墙规则[root@ecs-20200608 ~]# iptables -F ----清空防火墙规则[root@ecs-20200608 ~]# systemctl stop firewalld[root@ecs-20200608 ~]# systemctl disable firewalld ----开机自动关闭2. 关闭selinux 临时关闭[root@ecs-20200608 ~]# setenforce 0[root@ecs-20200608 ~]# getenforce ----查看selinxu状态 永久关闭[root@ecs-20200608 ~]# vim /etc/selinux/config SELINUX=disabled 把原来的enforcing修改为disabled 注: 想要生效需重启系统(reboot) 状态: enforcing permissive disabled 安装数据库服务[root@ecs-5680 ~]# yum -y install mariadb-server mariadb 安装php和apache服务[root@ecs-5680 yum.repos.d]# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm[root@ecs-5680 yum.repos.d]# yum install yum-utils[root@ecs-5680 yum.repos.d]# yum-config-manager --enable remi-php722.启动服务 3.服务部署 删除之前的配置文件(选中那个文件右键删除)[root@ecs-5680 yum.repos.d]# yum install httpd php php-gd php-json php-mysql php-curl php-mbstring php-intl php-mcrypt php-imagick php-xml php-zip [root@ecs-5680 yum.repos.d]# systemctl start httpd mariadb[root@ecs-5680 yum.repos.d]# ss -antp |grep 80 ESTAB 0 52 192.168.0.201:22 120.244.60.80:14874 users:(("sshd",pid=1562,fd=3)) LISTEN 0 511 [::]:80 [::]:* users:(("httpd",pid=8037,fd=4),("httpd",pid=8036,fd=4),("httpd",pid=8035,fd=4), ("httpd",pid=8034,fd=4),("httpd",pid=8033,fd=4),("httpd",pid=7994,fd=4)) [root@ecs-5680 yum.repos.d]# ss -antp |grep 3306 LISTEN 0 50 *:3306 *:* users:(("mysqld",pid=8262,fd=14))部署数据库服务:[root@ecs-5680 yum.repos.d]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.65-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY '123456'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> exit apache服务部署:(直接上传使用,事先已经写好了)[root@ecs-5680 yum.repos.d]# cd /etc/httpd/conf/[root@192 conf]# rm -rf httpd.conf 上传新的配置文件(右下角空白处右键上传,见到下面的界面) 选中那个文件上传即可4.产品上线 下载项目包:[root@ecs-5680 etc]# cd [root@ecs-5680 ~]# wget https://download.nextcloud.com/server/releases/nextcloud-15.0.0.zip解压项目包:[root@ecs-5680 ~]# unzip nextcloud-15.0.0.zip项目拷贝到网站发布目录下:[root@ecs-5680 ~]# mv nextcloud /var/www/设置权限:[root@ecs-5680 ~]# chown apache.apache /var/www/nextcloud/ -R 重新启动apache5.浏览器访问(输入公网ip地址访问)[root@ecs-5680 ~]# systemctl restart httpd6.安装完成后 如果不出现登录界面,换一个浏览器访问(看到这个界面后输入自己设置的用户名和密码)7.使用网盘8.上传文件 共享链接 复制链接(这个需要复制自己的,以下是举了一个案例:) http://119.8.98.63/index.php/s/Y5dryD6QkmCE7C
-
一、环境准备1、准备一台云服务器(华为云)2、使用finalshell远程连接云服务器3、操作之前重装服务器系统4、关闭防火墙5.关闭selinux二、服务部署1.关闭防火墙并设置开机自动关闭2.关闭selinux三、VuePress 程序VuePress是以Vue驱动的静态⽹站⽣成器,我理解功能有点类似gitbook,可以做 博客或者⽂档说明 官网: https://www.vuepress.cn/1.安装 Node.js 1.Node.js 部署[root@server-1 ~]# systemctl stop firewalld[root@server-1 ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. a.临时关闭[root@server-1 ~]# setenforce 0 b.永久关闭[root@server-1 ~]# vi /etc/selinux/config SELINUX=enforcing 注意:把enforcing修改为disabled2.创建Node.js 安装目录3.将⼆进制⽂件解压到要安装⽬录4. 使⽤查看node.js版本号命令验证是否解压成功5. 修改环境变量,使得能在任意⽬录下执⾏node命令 安装wget命令: [root@server-1 ~]# yum install -y wget 下载node.js软件包[root@server-1 ~]# wget https://npm.taobao.org/mirrors/node/v13.9.0/nodev13.9.0-linux-x64.tar.xz[root@server-1 ~]# ls anaconda-ks.cfg node-v13.9.0-linux-x64.tar.xz[root@server-1 ~]# mkdir -p /usr/local/lib/nodejs[root@server-1 ~]# tar -xJvf node-v13.9.0-linux-x64.tar.xz -C /usr/local/lib/nodejs 进⼊⽬录:[root@server-1 ~]# cd /usr/local/lib/nodejs/node-v13.9.0-linux-x64/bin 执⾏[root@server-1 bin]# pwd /usr/local/lib/nodejs/node-v13.9.0-linux-x64/bin[root@server-1 bin]# ./node -v v13.9.0[root@server-1 bin]# vim ~/.bash_profile 找到 PATH=$PATH:$HOME/bin,在PATH=$PATH:$HOME/bin 后⾯添加路 径:/usr/local/lib/nodejs/node-v13.9.0-linux-x64/bin, 结果为: PATH=$PATH:$HOME/bin:/usr/local/lib/nodejs/node-v13.9.0-linux-x64/bin 6. 到其他⽬录下验证 截图如下: ⾄此,nodejs安装完毕。2.安装 VuePress 1.全局安装 表示安装成功!!!2.准备相关目录[root@server-1 bin]# cd [root@server-1 ~]# node -v[root@server-1 ~]# npm version[root@server-1 ~]# npx -v 为加快下载安装速度,采⽤淘宝镜像。[root@server-1 ~]# npm config set registry https://registry.npm.taobao.org[root@server-1 ~]# npm install -g vuepress 3.项目初始化 3. 配置 VuePress1. 设置package.json的脚本配置2.创建相关目录 [root@server-1 ~]# mkdir try_blogs[root@server-1 ~]# cd try_blogs [root@server-1 try_blogs]# npm init -y 初始化后会⽣成⼀个package.json⽂件 之后进⼊配置步骤。修改scripts中的内容如下: "scripts": { "docs:dev": "vuepress dev docs", "docs:build": "vuepress build docs" }, try_blogs ├─ docs//以后要在这⾥⾯写⽂章,直接在此⽂件夹下新建⽂件夹,然后再建 md⽂档就⾏,链接会⾃动⽣成 │ ├─ README.md// 这个将会是我们以后的⾸页 │ └─ .vuepress // 这个⾥⾯会存放⼀些配置和组件 │ └─ public// 静态⽂件存放地 │ └─ config.js //配置⽂件,以后的所有配置基本都在这⾥写└─ package.json 开始创建相关文件和目录:[root@server-1 try_blogs]# mkdir docs [root@server-1 try_blogs]# cd docs[root@server-1 docs]# mkdir .vuepress [root@server-1 docs]# echo '# Hello VuePress - first blog!' >README.md3.启动本地服务进行访问4.客户端测试访问 http://ECS公⽹IP:8080 注意:使用云服务器的时候要开放8080端口。5.首页配置示例 注意: 在修改配置文件的时候重新开启一个终端进行修改文件,切不可关闭原有进程。修改README.md⽂件,将原来的内容删除后,将以下内容拷贝进去 修改完成后的配置文件:[root@server-1 docs]# cd .vuepress [root@server-1 .vuepress]# echo >config.js [root@server-1 .vuepress]# mkdir public 回到try_blogs⽬录,执⾏命令 [root@server-1 try_blogs]# vuepress dev docs ...... success [12:13:16] Build 721ba5 finished in 214 ms! ( http://localhost:8080/ ) --- home: true heroText: Vue技术博客初试 tagline: 项⽬结构,关注讨论,每⽇分享 actionText: 每⽇更新 →→ actionLink: /testlink/ features: - title: 项⽬结构 details: 以 Markdown 为中⼼的项⽬结构,以最少的配置帮助你专注于写作。 - title: 关注讨论 details: 享受 Vue + webpack 的开发体验,在 Markdown 中使⽤ Vue 组件,同时可以使⽤ Vue 来开发⾃定义主题。 - title: 每⽇分享 details: VuePress 为每个⻚⾯预渲染⽣成静态的 HTML,同时在⻚⾯被加载的时候,将作为 SPA 运 ⾏。 footer: LearnVueonECS Licensed | Copyright © 2020-present --- 重新刷新页面访问
-
基本介绍:今天给大家带来shell编程语言的基本网络攻防操作代码,包括:Dos攻击防范、Linux系统发送告警脚本、MySQL 数据库备份单循环、MySQL 数据库备份多循环、Nginx 访问访问日志按天切割、Nginx 访问日志分析脚本的代码分析,写的比较细致 亲测有效~1.Dos 攻击防范(自动屏蔽攻击 IP)#!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) LOG_FILE=/usr/local/nginx/logs/demo2.access.log ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print i}') for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP echo "$(date +'%F_%T') $IP" >> /tmp/drop_ip.log fi done2.Linux 系统发送告警脚本#!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) LOG_FILE=/usr/local/nginx/logs/demo2.access.log ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print i}') for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP echo "$(date +'%F_%T') $IP" >> /tmp/drop_ip.log fi done # yum install mailx # vi /etc/mail.rc set from=baojingtongzhi@163.com smtp=smtp.163.com set smtp-auth-user=baojingtongzhi@163.com smtp-auth-password=123456 set smtp-auth=login3.MySQL 数据库备份单循环#!/bin/bash DATE=$(date +%F_%H-%M-%S) HOST=localhost USER=backup PASS=123.com BACKUP_DIR=/data/db_backup DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema|sys") for DB in $DB_LIST; do BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql if ! mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null; then echo "$BACKUP_NAME 备份失败!" fi done4.MySQL 数据库备份多循环!/bin/bash DATE=$(date +%F_%H-%M-%S) HOST=localhost USER=backup PASS=123.com BACKUP_DIR=/data/db_backup DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema|mysql|performance_schema|sys") for DB in $DB_LIST; do BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE} [ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null) for TABLE in $TABLE_LIST; do BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; then echo "$BACKUP_NAME 备份失败!" fi done done5.Nginx 访问访问日志按天切割#!/bin/bash LOG_DIR=/usr/local/nginx/logs YESTERDAY_TIME=$(date -d "yesterday" +%F) LOG_MONTH_DIR=$LOG_DIR/$(date +"%Y-%m") LOG_FILE_LIST="default.access.log" for LOG_FILE in $LOG_FILE_LIST; do [ ! -d $LOG_MONTH_DIR ] && mkdir -p $LOG_MONTH_DIR mv $LOG_DIR/$LOG_FILE $LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME} done kill -USR1 $(cat /var/run/nginx.pid)6.Nginx 访问日志分析脚本#!/bin/bash # 日志格式: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for" LOG_FILE=$1 echo "统计访问最多的10个IP" awk '{a[$1]++}END{print "UV:",length(a);for(v in a)print v,a[v]}' $LOG_FILE |sort -k2 -nr |head -10 echo "----------------------" echo "统计时间段访问最多的IP" awk '$4>="[01/Dec/2018:13:20:25" && $410)print v,a[v]}}' $LOG_FILE |sort -k2 -nr echo "----------------------" echo "统计访问页面状态码数量" awk '{a[$7" "$9]++}END{for(v in a){if(a[v]>5)print v,a[v]}}'总结:shell语言是网络攻防的 基本操作语言 跟着小编学习网络攻防实践 月入百万
-
[root@lzw sbin]# more install_http.exp #!/usr/bin/expect -f set timeout 3 set TERM ANSI set SERVER [lindex $argv 0] set USER [lindex $argv 1] set PASSWD [lindex $argv 2] sleep 1 spawn ssh -p22 $USER@$SERVER sleep 1 expect { "yes/no" { send "yes\r" } sleep 1 } expect "*password:" { send "$PASSWD\r" } sleep 1 expect "#" {send "yum -y install httpd\r"} expect "#" {send "systemctl enable httpd\r"} expect "#" {send "exit\r"} expect eof [root@lzw sbin]# more install.sh #!/bin/sh PATH="/sbin:/usr/local/sbin:/usr/sbin:/bin:/usr/bin" export PATH cd /usr/local/sbin while read Ip User Pass do ./install_http.exp ${Ip} ${User} ${Pass} | sed 's/ //g' >/root/work/http.txt done < user.list [root@lzw sbin]# more user.list 192.168.189.140 root lzw123 测试: [root@lzw sbin]# sh -x install.sh [root@lzw sbin]# more /root/work/http.txt 验证客户机安装: [[root@keepalived2 ~]# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: inactive (dead) Docs: man:httpd(8) man:apachectl(8) 建议有ansible基础的同学可以比较这个shell脚本,ansible方式要简单。
-
新一年新的合集来啦,本次整理的全部是技术干活,省去爬楼的烦恼,技术涉及到JAVA基础,linux shell命令,python 前端vue,协议,日志打印。高大全,希望能有所帮助。 1.NVIDIA查看CPU、内存、GPU、DLA使用情况 https://bbs.huaweicloud.com/forum/thread-0279110443149219032-1-1.html?isStOrKp=false 2.LINUX查看进程的4种方法(小结) https://bbs.huaweicloud.com/forum/thread-0282110442926437031-1-1.html?isStOrKp=false 3.Linux之常用的压缩解压缩命令 https://bbs.huaweicloud.com/forum/thread-0294110442773298036-1-1.html?isStOrKp=false 4.shell输出重定向的实现【转】 https://bbs.huaweicloud.com/forum/thread-0279110442503633031-1-1.html?isStOrKp=false 5.shell wait等待命令的具体使用【转】 https://bbs.huaweicloud.com/forum/thread-02101110442346704021-1-1.html?isStOrKp=false 6.Bash EOF的使用小结【转】 https://bbs.huaweicloud.com/forum/thread-0279110441887515030-1-1.html?isStOrKp=false 7.Window11 WSL2 添加静态IP的脚本【转】 https://bbs.huaweicloud.com/forum/thread-0279110441635248029-1-1.html?isStOrKp=false 8.Shell脚本read用法实现【转】 https://bbs.huaweicloud.com/forum/thread-0282110431793299029-1-1.html?isStOrKp=false 9.Shell[[]]检测某个条件是否成立【转】 https://bbs.huaweicloud.com/forum/thread-02101110431652353020-1-1.html?isStOrKp=false 10.shell sleep睡眠命令的具体使用【转】 https://bbs.huaweicloud.com/forum/thread-0297110431557287028-1-1.html?isStOrKp=false 11.getopts解析shell脚本命令行参数的方法【转】 https://bbs.huaweicloud.com/forum/thread-02109110431398645036-1-1.html?isStOrKp=false 12.使用PowerShell获取Trustedinstaller权限的问题【转】 https://bbs.huaweicloud.com/forum/thread-0279110431217810027-1-1.html?isStOrKp=false 13.pip安装python库时报Failed building wheel for xxx错误的解决方法【转】 https://bbs.huaweicloud.com/forum/thread-02109110431020379035-1-1.html?isStOrKp=false 14.Python中__str__()的妙用【转】 https://bbs.huaweicloud.com/forum/thread-0279110389353151025-1-1.html?isStOrKp=false 15.Python学习之configparser模块的使用详解【转】 https://bbs.huaweicloud.com/forum/thread-0297110389142020024-1-1.html?isStOrKp=false 16.Python实现内存泄露排查的示例详解【转】 https://bbs.huaweicloud.com/forum/thread-0279110388970941024-1-1.html?isStOrKp=false 17.python如何在pygame中设置字体并显示中文详解【转】 https://bbs.huaweicloud.com/forum/thread-0282110388812371026-1-1.html?isStOrKp=false 18.一文详解pygame.sprite的精灵碰撞【转】 https://bbs.huaweicloud.com/forum/thread-0229110388691079025-1-1.html?isStOrKp=false 19.微信小程序使用uni-app一键获取用户信息 https://bbs.huaweicloud.com/forum/thread-02109110354721580028-1-1.html?isStOrKp=false 20.常见的Slf4j日志打印 https://bbs.huaweicloud.com/forum/thread-0219110344870256025-1-1.html?isStOrKp=false 21.Java的四个核心概念 https://bbs.huaweicloud.com/forum/thread-0297110343600852017-1-1.html?isStOrKp=false 22.Java-smartUpload全攻略 https://bbs.huaweicloud.com/forum/thread-0279110341387505015-1-1.html?isStOrKp=false 23.UDP协议发送/接收数据实现 https://bbs.huaweicloud.com/forum/thread-0279109389033415003-1-1.html?isStOrKp=false 24.TCP协议发送/接收数据实现 https://bbs.huaweicloud.com/forum/thread-0282109388725936002-1-1.html?isStOrKp=false 25.vue标题闪烁+声音提醒的实现 https://bbs.huaweicloud.com/forum/thread-0297109387622356007-1-1.html?isStOrKp=false
上滑加载中
推荐直播
-
华为AI技术发展与挑战:集成需求分析的实战指南
2024/11/26 周二 18:20-20:20
Alex 华为云学堂技术讲师
本期直播将综合讨论华为AI技术的发展现状,技术挑战,并深入探讨华为AI应用开发过程中的需求分析过程,从理论到实践帮助开发者快速掌握华为AI应用集成需求的框架和方法。
去报名 -
华为云DataArts+DWS助力企业数据治理一站式解决方案及应用实践
2024/11/27 周三 16:30-18:00
Walter.chi 华为云数据治理DTSE技术布道师
想知道数据治理项目中,数据主题域如何合理划分?数据标准及主数据标准如何制定?数仓分层模型如何合理规划?华为云DataArts+DWS助力企业数据治理项目一站式解决方案和应用实践告诉您答案!本期将从数据趋势、数据治理方案、数据治理规划及落地,案例分享四个方面来助力企业数据治理项目合理咨询规划及顺利实施。
去报名
热门标签