Linux shell脚本编程及系统启动实践
1、编写脚本,接受二个位置参数,magedu和/www,判断系统是否有magedu,如果没有则自动创建magedu用户,并自动设置家目录为/www
[root@test qiuhom]#cat checkuser.sh
#!/bin/bash
user=$1
[ $UID -ne 0 ] && echo "this script must root run it" && exit 3
[ $# -ne 2 ] && echo "usage bash $0 user homedir" && exit 4
if [[ $2 =~ ^(\/.*) ]];then
homedir=$2
else
echo "input homedir must directory"
exit 6
fi
if getent passwd $user &> /dev/null ;then
echo "$user is exist"
exit 7
else
useradd $user -m -d $homedir
[ $? -eq 0 ] && echo $user is create successful
fi [root@test qiuhom]#sh checkuser.sh tom
usage bash checkuser.sh user homedir
[root@test qiuhom]#sh checkuser.sh qiuhom /home/qiuhom
qiuhom is exist
[root@test qiuhom]#sh checkuser.sh tom tom
input homedir must directory
[root@test qiuhom]#sh checkuser.sh magedu /www
magedu is create successful
[root@test qiuhom]#getent passwd magedu
magedu:x:1004:1004::/www:/bin/bash
[root@test qiuhom]#ll /www/ -d
drwx------ 3 magedu magedu 78 11月 26 22:13 /www/
[root@test qiuhom]#ll /www/ -a
总用量 16
drwx------ 3 magedu magedu 78 11月 26 22:13 .
dr-xr-xr-x. 22 root root 4096 11月 26 22:13 ..
-rw-r--r-- 1 magedu magedu 18 10月 31 2018 .bash_logout
-rw-r--r-- 1 magedu magedu 193 10月 31 2018 .bash_profile
-rw-r--r-- 1 magedu magedu 231 10月 31 2018 .bashrc
drwxr-xr-x 4 magedu magedu 39 11月 3 14:33 .mozilla
[root@test qiuhom]#
2、使用expect实现自动登录系统。
[root@ansible_centos6 ~]# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:41:ff:c0 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.128/24 brd 192.168.0.255 scope global eth1
inet6 fe80::20c:29ff:fe41:ffc0/64 scope link
valid_lft forever preferred_lft forever
[root@ansible_centos6 ~]# cat autologin.exp
#!/usr/bin/expect
set ip [lindex $argv 0]
set user [lindex $argv 1]
set port [lindex $argv 2]
set passwd [lindex $argv 3]
set timeout 10
spawn ssh $user@$ip -p $port expect {
"yes/no" {send "yes\n";exp_continue}
"password" {send "$passwd\n"}
} interact
[root@ansible_centos6 ~]# expect autologin.exp 192.168.0.99 qiuhom 41319 admin
spawn ssh qiuhom@192.168.0.99 -p 41319
qiuhom@192.168.0.99's password:
[qiuhom@test ~]$ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:30:18:51:af:3c brd ff:ff:ff:ff:ff:ff
inet 192.168.0.99/24 brd 192.168.0.255 scope global noprefixroute enp2s0
valid_lft forever preferred_lft forever
inet 172.16.1.2/16 brd 172.16.255.255 scope global noprefixroute enp2s0:0
valid_lft forever preferred_lft forever
inet6 fe80::230:18ff:fe51:af3c/64 scope link
valid_lft forever preferred_lft forever
3: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 00:30:18:51:af:3d brd ff:ff:ff:ff:ff:ff
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:bd:55:ad:ff brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
[qiuhom@test ~]$
3、简述linux操作系统启动流程
此图片来自网络
4、破解centos7 密码。
方式一:
1)启动时按任意键停止启动,按e键进入编辑模式;
2)将光标移动到linux16开始的行,添加内核参数rd.break
3)按ctrl + x 启动
4)以只读方式重新挂载根;mount -o remount,rw /sysroot
说明:可以看到我们Ctrl + x 重新进入系统正在的根在/sysroot上,并且是只读挂载
5)切换根chroot /sysroot
6)更改密码 passwd root
7) touch /.autorelabel ,并退出当前切换后的根分区
说明:可以看到我们不退出当前切换后的根分区是不能重启的
8) 重新启动系统;reboot
方式二:
1)启动时按任意键暂停启动,并按e键进入编辑模式
2)将光标移动至linux16开始的行,并在末尾追加 rw init=/sysroot/bin/sh
3)Ctrl+x启动
说明:用以上启动方式,我们可以省略重新以读写方式挂载/sysroot,后续直接切换根,更改密码
4)切换根chroot /sysroot
5)更改root密码 passwd root
6)更新/.autorelabel文件的时间戳touch /.autorelabel (此文件的作用是下次重新启动它会重新标记selinux的文件系统)
7)exit 并重启
Linux shell脚本编程及系统启动实践的更多相关文章
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux Shell脚本编程--Linux特殊符号大全
Linux Shell脚本编程--Linux特殊符号大全 linux_shell 特殊符号的介绍 2011
- Linux Shell脚本编程while语句
Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo uptime sleep 3done 2,把监控结果保存 ...
- Linux Shell脚本编程-基础1
概述: shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础 ...
- Linux shell脚本编程基础之练习篇
shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...
- 【学习】Linux Shell脚本编程
1.脚本的组成和执行 Linux shell脚本的结构并不复杂,其主要由变量.内部命令以及shell的语法结构和一些函数.其他命令行的程序等组成,以下是一个简单的shell脚本. #!/bin/bas ...
- [linux] shell脚本编程-xunsearch安装脚本学习
安装脚本setup.sh #!/bin/sh # FULL fast install/upgrade script # See help message via `--help' # $Id$ # s ...
随机推荐
- MySQL常用DDL、DML、DCL语言整理
DDL ----Data Definition Language 数据库定义语言 如 create procedure之类 创建数据库 CREATE DATABASE [IF NOT EXISTS] ...
- react生命周期函数的应用-----1性能优化 2发ajax请求
知识点1:每次render其实就会将jax的模板生成一个虚拟dom,跟上一个虚拟dom进行比对,通过diff算法找出不同,再更新到真实dom上去. 1性能优化 每次父组件render一次(除了第一次初 ...
- AXN文档
https://help.aliyun.com/document_detail/59705.html?spm=a2c4g.11186623.6.664.58a053afCvMM57 AXN api文档 ...
- 字典树(Trie)详解
详解字典树(Trie) 本篇随笔简单讲解一下信息学奥林匹克竞赛中的较为常用的数据结构--字典树.字典树也叫Trie树.前缀树.顾名思义,它是一种针对字符串进行维护的数据结构.并且,它的用途超级广泛.建 ...
- Python的6种内建序列之通用操作
数据结构式通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python中,最基本的数据结构是序列(sequence).序列中的每 ...
- MyBatis的结构和配置
概述 MyBatis将用户从JDBC的访问中解放出来,用户只需要定义需要操作的SQL语句,无须关注底层的JDBC操作,就可以面向对象的方式进行持久层操作.底层数据库连接的获取.数据访问的实现.事务控制 ...
- 剑指offer笔记面试题13----机器人的运动范围
题目:地上有一个m行n列的方格.一个机器人从坐标(0, 0)的格子开始移动,它每次可以向左.右.上.下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子.例如,当k为18时,机器人能够进入方格( ...
- nginx实现基础web
目录 nginx实现基础web 什么是lnmp lnmp架构如何工作 Nginx与Fast-CGO详细工作流程 LNMP环境准备 一,部署LNMP 1.使用nginx官方源 2.创建nginx用户 3 ...
- MySql 筛选条件、聚合分组、连接查询
筛选条件 比较运算符 等于: = ( 注意!不是 == ) 不等于: != 或 <> 大于: > 大于等于: >= 小于: < 小于等于: <= IS NULL I ...
- Linux系统学习 四、网络基础—互联网概述,互联网接入方式
互联网概述 WWW:万维网 FTP:文件传输协议 E-MAIL:电子邮件 WWW 典型的C/S架构 URL:统一资源定位 协议+域名或IP:端口+网页路径+网页名 http://www.xxx.com ...