介绍
本文介绍自己开发shell脚本库(玩具项目)
# shell脚本库
# 1.创作背景
近日吾学习了linux,感觉是个不错的体验,但在安装软件如mysql等不是很方便,没有Windows那样的傻瓜式安装,故写下这些脚本。
# 2.不定时更新
吾会在学习的过程中把一些常见的操作写成脚本,提高可复用性,人类最大的特点就是会创造和使用工具。忙活了几天,起早摸黑写了这些shell 脚本,希望大家喜欢,可以的话点个star吧。
# 3.下面是我linux学习笔记
linux学习笔记 - 掘金 (juejin.cn) (opens new window)
# 4.脚本使用说明
src下面存放的两个目录是脚本文件所在位置
config-scripts目录
#./src/config-scripts/
change_yum_source.sh #更换yum源脚本
disable_selinux.sh #更改默认安装限制脚本
git_config.sh #git常用配置如ssh配置
static_ip_cfg.sh #主要是提供给本地虚拟机配置静态IP
update_date.sh #时间更新脚本
install-scripts目录
#./src/install-scripts/
git_install.sh #编译安装git脚本
install_commonly_page.sh #安装一些常用的包
nginx_install.sh #nginx安装脚本
node_install.sh #node安装脚本
# 注意:
以上的文件里面我写的都是函数
直接运行单个文件没有效果
# 注意:
可能刚下载的文件上传到linux上格式会不对
这时需要vim每个脚本文件
:set fileformat=unix
这样就能执行了
# 注意:
在使用git_config配置模块时要单独使用
先输入
ssh-agent bash
再
sh init.sh
# init.sh入口文件
#! /bin/bash
#导入静态IP配置模块
. ./src/config-scripts/static_ip_cfg.sh
# staticIpCfg
#导入更换yum源模块
. ./src/config-scripts/change_yum_source.sh
# changeYumSource
#导入常用包安装模块
. ./src/install-scripts/install_commonly_page.sh
# installCommonlyPage
#导入更新时间模块
. ./src/config-scripts/update_date.sh
# updateDate
#导入更改软件安装限制
. ./src/config-scripts/disable_selinux.sh
# disableSelinux
#导入node安装模块
. ./src/install-scripts/node_install.sh
# nodeInstall
#导入nginx安装模块
. ./src/install-scripts/nginx_install.sh
# nginxInstall
#导入git安装模块
. ./src/install-scripts/git_install.sh
# gitInstall
#导入git配置模块
. ./src/config-scripts/git_config.sh
#girConfig
# 如何使用
- 把文件下载到linux上面
- 修改init.sh
- 选择你想要的如何解开注释
- cd shell-scripts
- sh init.sh
# 使用截图
安装的时候要求输入链接
找到二进制文件右键复制链接
如何把链接输入进终端就行了
并且会自动配置环境变量
# 5.说明
关于mysql及其他相关的脚本,吾正在努力编写中
# 6.原理
不过是一些命令的巧妙组合,和一些复杂的安装配置步骤结合而成
下面放上git_install.sh源码和git_config.sh源码做示例
一些内容我放到linux笔记里的
linux学习笔记 - 掘金 (juejin.cn) (opens new window)
function gitInstall(){
#安装git
echo -e "\033[1;5;34m==========开始安装git==========\033[0m"
echo -e "\033[1;35m请输入git链接地址(输入abc表示默认使用默认的版本安装)\033[0m"
read gitaddr
if [[ $gitadd -eq "abc" ]]
then
gitaddr='https://github.com/git/git/archive/refs/tags/v2.34.1.tar.gz'
fi
wget -O ~/git.tar.gz $gitaddr
mkdir ~/git
tar -xvf ~/git.tar.gz -C ~/git --strip-components 1
#安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y
#编译
cd ~/git
make prefix=/usr/local/git all
#安装
make prefix=/usr/local/git install
#配置环境变量
echo 'export GIT_HOME=/usr/local/git/bin' >>/etc/profile
echo 'export PATH=$GIT_HTME:$PATH' >> /etc/profile
#重新加载资源
source /etc/profile
echo -e "\033[1;5;32m==========git安装成功==========\033[0m"
git --version
rm -rf ~/git.tar.gz ~/git
}
为了整这个git ssh配置劳累了一上午,特别是两主机间验证这个步骤必须要先
ssh-agent bash
但是键入ssh-agent bash命令会导致脚本直接退出
所以使用者先手动输入一下ssh-agent bash
再执行脚本
function gitConfig(){
echo -e "\033[1;5;34m=========开始配置git==========\033[0m"
function testGit(){
ssh -v git@github.com
ssh-agent -s
}
userName=`git config user.name`
userEmail=`git config user.email`
if [[ ${#userName} -eq 0 ]]
then
echo -e "\033[1;35m请输入用户名\033[0m"
read name
git config user.name $name
fi
if [[ ${#userEmail} -eq 0 ]]
then
echo -e "\033[1;35m请输入邮箱\033[0m"
read email
git config user.email $email
fi
echo -e "\033[1;35m其他默认配置如避免乱码\033[0m"
git config --global core.autocrlf false
git config --global core.quotepath off
git config --global gui.encoding utf-8
echo -e "\033[1;5;32m==========配置完成=========\033[0m"
git config --list
userName=`git config user.name`
userEmail=`git config user.email`
echo $userName $userEmail
echo -e "\033[1;5;34m是否要生成ssh keys可能会覆盖之前的请谨慎操作\033[0m"
select check in "是" "否"
do
case $check in
"否")
exit
break;;
"是")
mkdir -p ~/.ssh/$userName
ssh-keygen -t rsa -C $userEmail -f ~/.ssh/$userName/ssh_rsa
break ;;
esac
done
echo -e "\033[1;5;32m密钥生成成功请复制到github上或者在~/.ssh/$userName/ssh_rsa.pub下复制\033[0m"
cat ~/.ssh/$userName/ssh_rsa.pub
echo -e "\033[1;35m复制完成请输入yes\033[0m"
read istrue
if [[ $istrue -eq "yes" ]]
then
echo -e "\033[1;4;34m开始验证服务\033[0m"
testGit
ssh-add ~/.ssh/$userName/ssh_rsa
ssh -T git@github.com
echo -e "\033[1;5;32m如果最后输出的内容出现successly则成功\033[0m"
else
echo -e "\033[1;5;31m配置失败"
fi
}
# 5.希望
希望广大社区linux爱好者和我一起编写一些shell脚本,幸福你我他
再也不用为安装和配置而烦恼
另外点赞是对我最好的鼓励,谢谢大家