Linux shell脚本编程及系统启动实践

Linux shell脚本编程及系统启动实践,第1张

概述1、编写脚本,接受二个位置参数,magedu和/www,判断系统是否有magedu,如果没有则自动创建magedu用户,并自动设置家目录为/www [root@test qiuhom]#cat che

1、编写脚本,接受二个位置参数,magedu和/www,判断系统是否有magedu,如果没有则自动创建magedu用户,并自动设置家目录为/www

[root@test qiuhom]#cat checkuser.sh #!/bin/bashuser=[ $UID -ne 0 ] && echo "this script must root run it" && exit 3 [ $# -ne 2 ] && echo "usage bash 
[root@ansible_centos6 ~]# ip a s1: 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 forever2: eth1: <broADCAST,MulTICAST,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/expectset ip [lindex $argv 0]set user [lindex $argv 1]set port [lindex $argv 2]set passwd [lindex $argv 3]set timeout 10spawn ssh $user@$ip -p $portexpect {        "yes/no" {send "yes\n";exp_continue}        "password" {send "$passwd\n"}}interact[root@ansible_centos6 ~]# expect autologin.exp 192.168.0.99 qiuhom 41319 adminspawn ssh qiuhom@192.168.0.99 -p 41319qiuhom@192.168.0.99's password: [qiuhom@test ~]$ip a s1: lo: <LOOPBACK,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 forever2: enp2s0: <broADCAST,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 forever3: enp3s0: <NO-CARRIER,broADCAST,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:ff4: docker0: <NO-CARRIER,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 ~]$
user homedir" && exit 4if [[ =~ ^(\/.*) ]];then homedir=else echo "input homedir must directory" exit 6fi if getent passwd $user &> /dev/null ;then echo "$user is exist" exit 7else useradd $user -m -d $homedir [ $? -eq 0 ] && echo $user is create successfulfi[root@test qiuhom]#sh checkuser.sh tomusage bash checkuser.sh user homedir[root@test qiuhom]#sh checkuser.sh qiuhom /home/qiuhomqiuhom is exist[root@test qiuhom]#sh checkuser.sh tom tominput homedir must directory[root@test qiuhom]#sh checkuser.sh magedu /wwwmagedu is create successful[root@test qiuhom]#getent passwd magedumagedu:x:1004:1004::/www:/bin/bash[root@test qiuhom]#ll /www/ -ddrwx------ 3 magedu magedu 78 11月 26 22:13 /www/[root@test qiuhom]#ll /www/ -a 总用量 16drwx------ 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 .bashrcdrwxr-xr-x 4 magedu magedu 39 11月 3 14:33 .mozilla[root@test qiuhom]#

2、使用expect实现自动登录系统。

3、简述linux *** 作系统启动流程 

此图片来自网络

  1) 计算机加电自检,当给计算机通电后,其主板上的coms芯片会执行bios上的程序,程序会对其硬件信息去检查是否存在以及是否能够正常工作,最后初始化硬件;  2)bios启动引导,此阶段分两个步骤,第一步是查找引导设备,查找到第一个有引导程序的设备即为启动引导设备;第二步是找到了引导设备,读取引导设备上的mbr(第一扇区的前446字节数bootloader 中间64字节数分区表 最后两个字节是55aa共512字节);  3)grub启动引导,grub提供给我们选择菜单,我们可以选择其不同内核版本的内核进行启动(如果是多内核的情况),然后把我们选择的内核装载到内存中解压展开,最后读取grub配置文件找到initrd.img(此文件存放各种硬件驱动以便后续切换根)  4)内核初始化,此阶段主要是探测可识别的硬件,加载硬件驱动,切换根分区(挂载rootfs),运行系统第一个进程init进程初始化系统;  5)系统初始化,此阶段主要是初始化软件运行环境,它会读取配文件/init/inittab(centos5和6)或者systemd(centos7)读取默认运行级别,然后运行该默认级别下的脚本,启停默认级别下定义的服务(centos7采用systemd来启停服务,centos6是采用init进程来启停服务),最后登录终端;

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) @R_419_5985@ /.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文件的时间戳@R_419_5985@ /.autorelabel  (此文件的作用是下次重新启动它会重新标记selinux的文件系统)

  7)exit   并重启

总结

以上是内存溢出为你收集整理的Linux shell脚本编程及系统启动实践全部内容,希望文章能够帮你解决Linux shell脚本编程及系统启动实践所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1015866.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存