[工具] Shell 将同目录下最新的某个目录里的所有文件替换到 GitHub 库里

介绍

基本信息

作者:朱明宇
名称:将同目录下最新的某个目录里的所有文件替换到 GitHub 库里
作用:将同目录下最新的某个目录里的所有文件替换到 GitHub 库里

使用方法

1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量

1. directory=download-eternalcenter #本地的缓冲目录
2. gituser=mingyuzhu #GitHub 用户
3. gitemail=mingyu.zhu@eternalcenter.com #GitHub 邮箱
4. gitrepository=download-eternalcenter #GitHub 库
5. gitbranch=’master’ #GitHub 库的分支
6. backupfile=all #备份后的文件
7. keyword=clone #同目录下要备份目录名称的关键字

注意

需要提前安装 git,注册 GitHub,创建相应的 GitHub 库,并且创建和设置了对应的 ssh 密钥

脚本

#!/bin/bash

####################### Separator ########################

directory=download-eternalcenter
gituser=mingyuzhu
gitemail=mingyu.zhu@eternalcenter.com
gitrepository=download-eternalcenter
gitbranch='master'
backupfile=all
keyword=clone

####################### Separator ########################

backupdirectory=`ls -rtlh | grep $keyword | awk '{print $NF}' | tail -1`

sqlfile=`ls $backupdirectory | grep sql`
tarfile=`ls $backupdirectory | grep tar`

rm -rf $directory
mkdir -p $directory &> /dev/null

echo $gituser
git config --global user.email "$gitemail"
git config --global user.name "$gituser"

rm -rf $directory
mkdir -p $directory &> /dev/null
cd $directory
git init
git remote add origin git@github.com:$gituser/$gitrepository
git pull --rebase origin $gitbranch -f
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *' --prune-empty --tag-name-filter cat -- --all
git commit -m 'cleapup'
git push -u origin $gitbranch -f
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

cd ..

rm -rf $directory
mkdir -p $directory &> /dev/null
cd $directory
git init
git remote add origin git@github.com:$gituser/$gitrepository
git pull --rebase origin $gitbranch -f
git rm *
git commit -m 'cleapup'

cd ../$backupdirectory/
tar -zcvf ../$directory/$backupfile.tar.gz *
cd ../$directory

git add *
git status
git commit -m 'upload'
git push -u origin $gitbranch -f
cd ..

[排错] 解决 Red Hat Satellite 客户端注册成功但是无法获取软件源

报错代码

# subscription-manager repos
This system has no repositories available through subscriptions.

解决方法

步骤一:确保 /etc/pki/product/69.pem 文件的存在,且权限和下面的一致

# ls -l /etc/pki/product/69.pem
-rw-r----- 1 root root 2159 Nov  5 17:36 /etc/pki/product/69.pem

步骤二:确保 /etc/pki/product-default/69.pem 文件的存在,且权限和下面的一致

# ls -l /etc/pki/product-default/69.pem
-rw-r----- 1 644 root 2159 Nov  5 17:36 /etc/pki/product-default/69.pem

步骤三:如果步骤一和步骤二中的文件不存在

3.1 可以从其他正常的客户端那里拷贝

(步骤略)

3.2 可以从以下网址里下载

https://access.redhat.com/labs/rhpc/

[步骤] Red Hat Satellite 客户端 UUID 的显示

步骤一:规划拓扑

1.1 服务器列表

Red Hat Satellite 服务端
Red Hat Satellite 客户端

1.2 服务器列表简介

Red Hat Satellite 客户端注册到 Red Hat Satellite 服务端获取软件和补丁

步骤二:获取 Red Hat Satellite 客户端的 UUID

(只在 Red Hat Satellite 客户端执行以下步骤)

# subscription-manager facts --list | grep -i UUID

步骤三:确认 Red Hat Satellite 客户端的 UUID 在服务端中出现

(只在 Red Hat Satellite 服务端执行以下步骤)

# cat /var/log/rhsm/rhsm.log | grep -i <client's UUID>

步骤四:显示 Red Hat Satellite 客户端在服务端中的具体信息

(只在 Red Hat Satellite 服务端执行以下步骤)

# vim /var/log/rhsm/rhsm.log

(补充:在 vim 中查找对应客户端的 UUID 并联系上下文进行显示)

[步骤] Red Hat Satellite Virt-who 账号或密码的更换

内容一:Virt-who 账号的作用

1) Virt-who 的作用是让 Red Hat Satellite 服务器能判断虚拟机在哪一台物理机上运行
2) Redhat 的无限量 license 必须要让虚拟机在 license 所在的物理机上运行才能获得软件和补丁
3) Virt-who 必须正常无限连 license 才能生效
4) 而 Virt-who 账号的作用就是有权限登录对应的平台,让 Red Hat Satellite 服务器能判断虚拟机在哪一台物理机上运行

内容二:修改 Virt-who 账号或密码

2.1 进入 Virt-who 的配置页面

登录 Satellite 网页 –> 基础架构 –> Virt-who Configurations –> 对应的 Name 的编辑

2.2 修改账号和密码

(步骤略)

内容三:重新部署 Virt-who

3.1 进入 Virt-who 的 Deploy 页面

登录 Satellite 网页 –> 基础架构 –> Virt-who Configurations –> 对应的 Name –> Deploy

3.2 执行里面的步骤

(步骤略)

[排错] 解决 Linux 发送邮件时报错 “send-mail: fatal: parameter inet_interfaces: no local interface found for ::1”

报错代码

send-mail: fatal: parameter inet_interfaces: no local interface found for ::1

解决方法

步骤一:修改 postfix 的配置文件

# vim /etc/postfix/main.cf

将以下内容:

......
inet_interfaces = localhost
......
inet_protocols = all
......

修改为:

......
inet_interfaces = all
......
inet_protocols = all
......

步骤二:重启 postfix 服务

# systemctl restart postfix