运维Shell脚本小试牛刀(一)



运维Shell脚本小试牛刀(一)

运维Shell脚本小试牛刀(二)





一: Shell中循环剖析 for 循环.......

#!/bin/bash -

#==================================================================================================================

FILE: countloop.sh

USAGE: ./countloop.sh

DESCRIPTION:

OPTIONS: -------

REQUIREMENTS: ---------

BUGS: ------

NOTES: --------

AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com

ORGANIZATION:

CREATED: 2023-8-24 09:11:20

REVISION: --------

#====================================================================================================================

for i in 1 2 3 4 5 6 #循环1~6

do

echo "Thre for loop is run $i times."

done

echo "==============================================================================================================="

for linux in Debian Redhat Suse Fedora Centos7 Ubunto

do

echo "current out system is ${linux}....."

done

echo "================================================================================================================"



#!/bin/bash -

#==================================================================================================================

FILE: orcmdssub.sh

USAGE: ./forcmdssub.sh

DESCRIPTION:

OPTIONS: -------

REQUIREMENTS: ---------

BUGS: ------

NOTES: --------

AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com

ORGANIZATION:

CREATED: 2023-8-24 09:11:20

REVISION: --------

#====================================================================================================================

echo "Printing file list in /etc directory........"

for file in `ls /etc/*`

do

echo "current print file is: $file"

done



#!/bin/bash -

#==================================================================================================================

FILE: forcmdssub.sh

USAGE: ./forcmdssub.sh

DESCRIPTION:

OPTIONS: -------

REQUIREMENTS: ---------

BUGS: ------

NOTES: --------

AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com

ORGANIZATION:

CREATED: 2023-8-24 09:11:20

REVISION: --------

#====================================================================================================================

echo "Printing file list in /etc directory........"

for file in `ls /etc/*`

do

echo "current print file is: $file"

done

root@www shelldic# cat forvarscoutents.sh

#!/bin/bash -

#==================================================================================================================

FILE: forvarscoutents.sh

USAGE: ./forvarscoutents.sh

DESCRIPTION:

OPTIONS: -------

REQUIREMENTS: ---------

BUGS: ------

NOTES: --------

AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com

ORGANIZATION:

CREATED: 2023-8-24 09:11:20

REVISION: --------

#====================================================================================================================

filenames="/etc/my.cnf /etc/vconsole.conf /etc/rsyncd.conf /etc/sestatus.conf /usr/local/rs.conf"

上面的文件名以空格分割

for file in $filenames

do

-f $file && echo "The file file was found.." \|\| echo "\*\*\*\*\* ERROR: The file file was missing.....*******"

如果是文件,则打印文件存在,如果不存在则打印丢失

done



#!/bin/bash -

#==================================================================================================================

FILE: simplenestedfor.sh

USAGE: ./simplenestedfor.sh

DESCRIPTION:

OPTIONS: -------

REQUIREMENTS: ---------

BUGS: ------

NOTES: --------

AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com

ORGANIZATION:

CREATED: 2023-8-24 09:11:20

REVISION: --------

#====================================================================================================================

for (( i = 0; i < 30; i++ )) #外循环

do

for (( j=0; j<160; j++ )) # 内循环

do

echo -n "* " #

done

echo "" #

done




二 : while循环



#!/bin/bash -

#==================================================================================================================

FILE: whichreadfile.sh

USAGE: ./whichreadfile.sh

DESCRIPTION:

OPTIONS: -------

REQUIREMENTS: ---------

BUGS: ------

NOTES: --------

AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com

ORGANIZATION:

CREATED: 2023-8-24 09:11:20

REVISION: --------

#====================================================================================================================

file=$1 # 将位置参数1的值赋值给变量file

if $# -lt 1 ;then # 如果脚本未指定参数,则打印使用方法并退出运行

echo "Usage: $0 FILEPATH"

exit

fi

while read -r line # 使用read命令从标准输入读取文件的一行,并赋值给变量line

do

echo $line # 打印读取的行

done < "$file"


root@www shelldic# cat whilereadfile.sh

#!/bin/bash -

#==================================================================================================================

FILE: whichreadfile.sh

USAGE: ./whichreadfile.sh

DESCRIPTION:

OPTIONS: -------

REQUIREMENTS: ---------

BUGS: ------

NOTES: --------

AUTHOR: ---------YangGe (TOM) ,YangGe.freedom@icloud.com

ORGANIZATION:

CREATED: 2023-8-24 09:11:20

REVISION: --------

#====================================================================================================================

file=$1 # 将位置参数1的值赋值给变量file

if $# -lt 1 ;then # 如果脚本未指定参数,则打印使用方法并退出运行

echo "Usage: $0 FILEPATH"

exit

fi

while read -r line # 使用read命令从标准输入读取文件的一行,并赋值给变量line

do

echo $line # 打印读取的行

done < "$file"

输出测试:

root@www shelldic#./whilereadfile.sh /etc/sudo.conf

Default /etc/sudo.conf file

Format:

Plugin plugin_name plugin_path plugin_options ...

Path askpass /path/to/askpass

Path noexec /path/to/sudo_noexec.so

Debug sudo /var/log/sudo_debug all@warn

Set disable_coredump true

Sudo plugins:

The plugin_path is relative to ${prefix}/libexec unless fully qualified.

The plugin_name corresponds to a global symbol in the plugin

that contains the plugin interface structure.

The plugin_options are optional.

The sudoers plugin is used by default if no Plugin lines are present.

Plugin sudoers_policy sudoers.so

Plugin sudoers_io sudoers.so

Sudo askpass:

An askpass helper program may be specified to provide a graphical

password prompt for "sudo -A" support. Sudo does not ship with its

own passpass program but can use the OpenSSH askpass.

Use the OpenSSH askpass

#Path askpass /usr/X11R6/bin/ssh-askpass

Use the Gnome OpenSSH askpass

#Path askpass /usr/libexec/openssh/gnome-ssh-askpass

Sudo noexec:

Path to a shared library containing dummy versions of the execv(),

execve() and fexecve() library functions that just return an error.

This is used to implement the "noexec" functionality on systems that

support C<LD_PRELOAD> or its equivalent.

The compiled-in value is usually sufficient and should only be changed

if you rename or move the sudo_noexec.so file.

#Path noexec /usr/libexec/sudo_noexec.so

Core dumps:

By default, sudo disables core dumps while it is executing (they

are re-enabled for the command that is run).

To aid in debugging sudo problems, you may wish to enable core

dumps by setting "disable_coredump" to false.

Set to false here so as not to interfere with /proc/sys/fs/suid_dumpable

Set disable_coredump false

相关推荐
数安旭说7 分钟前
企业终端行为审计建设:本地审计 + 网络审计构建完整溯源取证体系
运维·数据安全·软件需求·溯源·审计·网络审计
码农小韩16 分钟前
Linux应用开发(二)——Linux的文件IO
linux·嵌入式软件·嵌入式操作系统·linux应用
Elastic 中国社区官方博客1 小时前
在 Elasticsearch 中回填时间序列数据:通过批量 API 加载数月的历史指标数据
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·全文检索
Horn Still Sounds1 小时前
Linux网络并发服务器模型与SQLite数据库学习笔记
linux·服务器·数据库
10mAh1 小时前
【Linux】CPU 100% 怎么排查?——top、pidstat、jstack 到线程定位实战
linux·运维·服务器
深念Y1 小时前
开机启动优化记录
linux·开机
!chen2 小时前
客户环境 Nginx 配置流式报表与超时排查
运维·nginx
2601_966799042 小时前
酷嗨米J300:硬件级多通道分发采集设备,为矩阵直播打造独立信号通道
服务器·网络·负载均衡
落樱弥城2 小时前
RHI 设计考量:不同 API 差异分析
服务器·前端·性能优化
Titan20242 小时前
网络基础:传输层协议知识梳理
linux·服务器·网络