当前位置: 首页 > article >正文

Shell经典面试题

1、需求:判断192.168.1.0/24网络中,当前在线的ip有哪些,并编写脚本打印出来。

编写脚本:

脚本名1.sh

#!/bin/bash
network="192.168.1."
for i in `seq 1 254`
do
    ip="${network}${i}"
    ping -c 1 -W 1 $ip > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "$ip is online"
    fi
done


 执行脚本结果:

[root@localhost ~]# vim 1.sh
[root@localhost ~]# chmod +x 1.sh
[root@localhost ~]# ./1.sh
192.168.1.2 is online
192.168.1.11 is online
192.168.1.51 is online
然后被我终止了,有几个参考就行了

注意:

1. 网络与安全

防火墙:系统或网络设备防火墙可能阻止ICMP等探测包,致主机被误判离线,需调整规则。

访问控制:MAC过滤或认证限制,可能使虚拟机无权限扫描网段,影响检测。

2. 脚本执行权限:Linux脚本需执行权限,Windows批处理可能要管理员权限运行。

依赖:使用如nmap等工具,需先安装,且注意版本差异。


2、设计一个 Shell 程序,在/userdata 目录下建立50个目录,即 userl~user50,并设置每个
目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组
的权限为:读、执行。

编写脚本:

脚本名4.sh

#!/bin/bash
#########################
#File name:4.sh
#Version:v1.0
#Email:admin@test.com
#Created time:2025-01-12 02:16:17
#Description:
#########################
target_dir="/userdata"
if [ ! -d "$target_dir" ]; then
    mkdir -p "$target_dir"
fi
cd "$target_dir"
for i in {1..50}; do
    mkdir "user$i"
    chmod 754 "user$i"
done
echo "50个目录已创建并设置权限完成。"

执行脚本结果:

[root@localhost ~]# vim 4.sh
[root@localhost ~]# chmod +x 4.sh
[root@localhost ~]# sudo ./4.sh

mkdir: cannot create directory ‘user1’: File exists
mkdir: cannot create directory ‘user2’: File exists
mkdir: cannot create directory ‘user3’: File exists
mkdir: cannot create directory ‘user4’: File exists
mkdir: cannot create directory ‘user5’: File exists
mkdir: cannot create directory ‘user6’: File exists
mkdir: cannot create directory ‘user7’: File exists
mkdir: cannot create directory ‘user8’: File exists
mkdir: cannot create directory ‘user9’: File exists
mkdir: cannot create directory ‘user10’: File exists
mkdir: cannot create directory ‘user11’: File exists
mkdir: cannot create directory ‘user12’: File exists
mkdir: cannot create directory ‘user13’: File exists
mkdir: cannot create directory ‘user14’: File exists
mkdir: cannot create directory ‘user15’: File exists
mkdir: cannot create directory ‘user16’: File exists
mkdir: cannot create directory ‘user17’: File exists
mkdir: cannot create directory ‘user18’: File exists
mkdir: cannot create directory ‘user19’: File exists
mkdir: cannot create directory ‘user20’: File exists
mkdir: cannot create directory ‘user21’: File exists
mkdir: cannot create directory ‘user22’: File exists
mkdir: cannot create directory ‘user23’: File exists
mkdir: cannot create directory ‘user24’: File exists
mkdir: cannot create directory ‘user25’: File exists
mkdir: cannot create directory ‘user26’: File exists
mkdir: cannot create directory ‘user27’: File exists
mkdir: cannot create directory ‘user28’: File exists
mkdir: cannot create directory ‘user29’: File exists
mkdir: cannot create directory ‘user30’: File exists
mkdir: cannot create directory ‘user31’: File exists
mkdir: cannot create directory ‘user32’: File exists
mkdir: cannot create directory ‘user33’: File exists
mkdir: cannot create directory ‘user34’: File exists
mkdir: cannot create directory ‘user35’: File exists
mkdir: cannot create directory ‘user36’: File exists
mkdir: cannot create directory ‘user37’: File exists
mkdir: cannot create directory ‘user38’: File exists
mkdir: cannot create directory ‘user39’: File exists
mkdir: cannot create directory ‘user40’: File exists
mkdir: cannot create directory ‘user41’: File exists
mkdir: cannot create directory ‘user42’: File exists
mkdir: cannot create directory ‘user43’: File exists
mkdir: cannot create directory ‘user44’: File exists
mkdir: cannot create directory ‘user45’: File exists
mkdir: cannot create directory ‘user46’: File exists
mkdir: cannot create directory ‘user47’: File exists
mkdir: cannot create directory ‘user48’: File exists
mkdir: cannot create directory ‘user49’: File exists
mkdir: cannot create directory ‘user50’: File exists
50个目录已创建并设置权限完成。

为什么使用sudo ./4.sh

因为需要root用户身份运行脚本(因为需要在/userdata目录下创建目录)

chmod +x 文件名 是给脚本文件添加执行权限

注意:

确保以root用户身份运行脚本,因为普通用户可能没有权限在/userdata目录下创建目录。

如果/userdata目录已经存在并且已经有内容,脚本会继续在该目录下创建新的目录,不会覆盖已有的内容。


http://www.kler.cn/a/502240.html

相关文章:

  • 设计一个利用事务特性可以阻塞线程的排他锁,并且通过注解和 AOP 来实现
  • 该虚拟机似乎正在使用中。 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。
  • mycat介绍与操作步骤
  • 自动化构音障碍严重程度分类:基于声学特征与深度学习的研究 学习技术
  • 解决SpringBoot无法使用JDK8问题
  • 【Qt】事件、qt文件
  • istoreos安装tailscale命令
  • 力扣257(关于回溯算法)二叉树的所有路径
  • 机器学习 - 如何理解几何学中的超平面 ?
  • Qt+ffmpeg+libVlc 实现简单视频播放器
  • [0405].第05节:搭建Redis主从架构
  • Vue.js开发入门:从零开始搭建你的第一个项目
  • [读书日志]从零开始学习Chisel 第十一篇:Scala的类型参数化(敏捷硬件开发语言Chisel与数字系统设计)
  • gojs2.3去除水印
  • C#中的Null注意事项
  • 银河麒麟桌面操作系统搭建FTP服务器
  • 热烈祝贺“钛然科技”选择使用订单日记
  • 国产信创3D- 中望3D Linux 2025发布,助力企业高效转型国产三维CAD
  • 【论文笔记】多个大规模数据集上的SOTA绝对位姿回归方法:Reloc3r
  • 基于springboot+vue的 嗨玩-旅游网站
  • 方法引用与lambda底层原理Java方法引用、lambda能被序列化么?
  • Vue 3前端与Python(Django)后端接口简单示例
  • 74.搜索二维矩阵 python
  • HTTP 常用方法解析
  • CES Asia 2025:科技盛宴即将开启,续写辉煌篇章
  • 快速、简单的2D-6D位姿估计:Gen6D算法复现 (pytorch 1.12.1 + cu113)