GVKun编程网logo

centos6环境远程执行shell脚本报错not a valid identifier的问题处理(centos无法远程)

22

此处将为大家介绍关于centos6环境远程执行shell脚本报错notavalididentifier的问题处理的详细内容,并且为您解答有关centos无法远程的相关问题,此外,我们还将为您介绍关于C

此处将为大家介绍关于centos6环境远程执行shell脚本报错not a valid identifier的问题处理的详细内容,并且为您解答有关centos无法远程的相关问题,此外,我们还将为您介绍关于CentOS 7 Shell脚本编程第二讲 Shell 脚本创建和执行、CentOS 7重启报错:Entering emergency mode. Exit the shell to continue...、centos crontab定时运行shell脚本、Centos 的 Shell 脚本定时执行SQL语句的有用信息。

本文目录一览:

centos6环境远程执行shell脚本报错not a valid identifier的问题处理(centos无法远程)

centos6环境远程执行shell脚本报错not a valid identifier的问题处理(centos无法远程)

# 通过jenkins的apache用户rsync同步php代码到远程服务器报错如下:

SSH: EXEC: STDOUT/STDERR from command [/bin/sh /usr/local/worksh/jenkins_rsync/rsync_cc-product-api_cn.sh all ] ...
/usr/local/worksh/jenkins_rsync/rsync_cc-product-api_cn.sh: line 29: `product-api_rsync_all'': not a valid identifier
SSH: EXEC: completed after 201 ms
SSH: Disconnecting configuration [sz_platform01] ... 

# 确认问题,在jenkins服务器中模拟问题,确实报错了,但是在目标服务器 1.1.1.1中root切换到apache直接执行代码是没有问题的
猜测可能是jenkins发布代码时使用了 source /etc/profile 导致环境变量不同引发的问题

[apache@dev9_50:/root]$ ssh -p2025 apache@1.1.1.1 "/bin/sh /usr/local/worksh/jenkins_rsync/rsync_cc-product-api_cn.sh all"
apache@1.1.1.1''s password: 
/usr/local/worksh/jenkins_rsync/rsync_cc-product-api_cn.sh: line 29: `product-api_rsync_all'': not a valid identifier
[apache@dev9_50:/root]$ 


# 具体的脚本如下
[root@sz_platform_web01:~]# cat /usr/local/worksh/jenkins_rsync/rsync_cc-product-api_cn.sh
#!/bin/bash

##############jenkins拉取git代码同步到 1.1.1.1_sz_platform_web01 上,然后触发 1.1.1.1_sz_platform_web01 上的该脚本进行 szali 内网机房同步####################
###### rsync product-api.chinasoft.com data ######################################
passwd="/data/www/.rsync/rsyncd.pass1"
exclude_list="--exclude=logs/ --exclude=cache/ --exclude=.git --exclude=.gitignore --exclude=.gitattributes --exclude=store_data/ --exclude=invoice_file/"


# szali_product_api_ip

szali_product_api_ip_list="172.18.54.136"


#############################################################

# 同步所有机房
function product-api_rsync_all()
{
# rsync szali_product-api
for szali_product_api_ip in $szali_product_api_ip_list
do    
    echo "####################rsync szali_product-api start################################"
        echo $szali_product_api_ip
    rsync -zavP --delete $exclude_list --password-file=$passwd /data/www/vhosts/product-api.chinasoft.com/ apache@$szali_product_api_ip::apache/data/www/vhosts/product-api.chinasoft.com/
    echo "################### rsync szali_product-api end #######################"
done


}

# 只同步深圳机房
function product-api_rsync_szali()
{
# rsync szali_product-api
for szali_product_api_ip in $szali_product_api_ip_list
do    
    echo "####################rsync szali_product-api start################################"
        echo $szali_product_api_ip
    rsync -zavP --delete $exclude_list --password-file=$passwd /data/www/vhosts/product-api.chinasoft.com/ apache@$szali_product_api_ip::apache/data/www/vhosts/product-api.chinasoft.com/
    echo "################### rsync szali_product-api end #######################"
done
}



#####################  MAIN  ###############################
usage () {
        echo ""
        echo "  Please Input server infomation!"
        echo ""
        echo "  USAGE: `basename $0` [all|product-api_szali]"
        echo ""
}
    
if [ $# != 1 ]
then
        usage >&2
        exit 1
fi
OPT=$1
case $OPT in
all)
        echo "start rsync `basename $0` to all apiservice servers"
        product-api_rsync_all
        ;;
apiservice_szali)
        echo "start rsync `basename $0` to szali_product-api_servers"
        product-api_rsync_szali
    ;;

*)
        echo "Usage:`basename $0` [all|product-api_szali]"
        ;;
esac


# 经过反复修改,发现是中划线的问题,将函数名统一更换为下划线即可_
product-api_rsync_all --> 修改为 product_api_rsync_all

product-api_rsync_szali --> 修改为 product_api_rsync_szali

 

CentOS 7 Shell脚本编程第二讲 Shell 脚本创建和执行

CentOS 7 Shell脚本编程第二讲 Shell 脚本创建和执行

首先说明一点,shell和python在语法上有很多相同点,比如都不强制以不以;结尾,都是弱类型脚本语言。

[root@promote ~]# yum install vim -y

Shell 脚本通常用编辑器vim创建和修改。也可以使用其他编辑器,例如nano等。

创建脚本users.sh。用于显示当前用户。

[root@promote ~]# vim users.sh
#按i进入编辑模式输入who
#按Esc 退出编辑模式
#输入:wq 保存文件

#授予脚本可执行权限
[root@promote ~]# chmod +x users.sh
#查看当前目录文件
[root@promote ~]# ls
#执行脚本
[root@promote ~]# ./users.sh 
root     tty1         2019-03-31 11:17
root     pts/0        2019-03-31 14:08 (192.168.216.1)
[root@promote ~]# 

可以看出当前用户是root,分别在本机和192.168.216.1远程登录。vim快捷键还可以使用w保存修改,q退出编辑,q!不保存强制退出编辑。

下文正式开始Shell脚本编写。该脚本执行安装epel-release和htop两个软件。

[root@promote ~]# vim install_htop.sh
#!/bin/bash
#Date: 2019-03-31 14:55:55
#Author: WeiWei
#Version: v1.0
#install epel-release
yum install epel-release -y
#install htop
yum install htop -y

#!/bin/bash用于指定脚本解释器,本例指定解释器为/bin/bash,通常脚本还加上编写时间、作者和版本等信息,用于满足Shell编程规范推荐。从该脚本开始需要增加以上注释内容。

#开头为注释,通常位于脚本前后行或脚本行尾,解释器不会加以解释执行。脚本增加注释可以帮助自己和他人理解脚本用途,通常脚本不建议使用中文字符。

脚本文件如何执行呢?除了第一讲介绍方法外,下文介绍第二和第三种方法。

#和第一种方法缺少chmod赋予执行权限过程
[root@promote ~]# bash install_htop.sh 
#第三种方法
[root@promote ~]# source install_htop.sh 

脚本执行过程中,会查找系统环境变量。env命令可以详细显示环境变量。

[root@promote ~]# env

思考内容:是否有其他命令显示系统变量?

CentOS 7重启报错:Entering emergency mode. Exit the shell to continue...

CentOS 7重启报错:Entering emergency mode. Exit the shell to continue...

1.报错:Entering emergency mode. Exit the shell to continue.

2.故障分析(猜测):不按规范挂机或重启导致文件系统故障。

3.故障状态:

备注:注意中间读取的是sda3失败

4.故障解决:

输入命令:xfs_repair -v -L /dev/sda3

-L 选项指定强制日志清零,强制xfs_repair将日志归零,即使它包含脏数据(元数据更改)。

centos crontab定时运行shell脚本

centos crontab定时运行shell脚本

1、安装yum install crontabs


2、创建脚本touch test.sh


3、编辑脚本vi test.sh


编辑后的test.sh还不是可执行文件,需要执行chmod 700 test.sh

4、编辑crontab -e (类似于vi操作)

20 23 * * * /home/pe/test.sh

表示每天晚上23:20运行脚本test.sh


5、手动启动crontab服务:service crond start


深入学习:

http://www.ha97.com/910.html

https://www.cnblogs.com/chen-lhx/p/5996781.html

https://www.cnblogs.com/kerrycode/p/3238346.html

https://blog.csdn.net/baidu_35757025/article/details/64437792

Centos 的 Shell 脚本定时执行SQL语句

Centos 的 Shell 脚本定时执行SQL语句

目的:解决每天重复刷新数据的问题;

1. 编写Shell 脚本excute_MysqL.sh

#!/bin/bash  
# Define log  
TIMESTAMP=`date +%Y%m%d%H%M%s`
LOG=call_sql_${TIMESTAMP}.log
echo "Start execute sql statement at `date`." >>${LOG}

#o execute sql stat 
MysqL -e '
use onem2bak;
UPDATE `onem2bak`.`system_function` SET `security_leven` = "low" where 1=1;  
quit'

因为我是使用MysqL本地免密登录,如果你设置了密码就将MysqL -e 改成 MysqL -uroot -p123456 -e;

2. 设置执行权限

chmod 777 excute_MysqL.sh

3. 设置定时任务执行

#修改定时任务
crontab -e

新增一行
59 23 * * *  /home/shell/excute_MysqL.sh

#查看定时任务
crontab -l
好了,到此结束。

今天关于centos6环境远程执行shell脚本报错not a valid identifier的问题处理centos无法远程的分享就到这里,希望大家有所收获,若想了解更多关于CentOS 7 Shell脚本编程第二讲 Shell 脚本创建和执行、CentOS 7重启报错:Entering emergency mode. Exit the shell to continue...、centos crontab定时运行shell脚本、Centos 的 Shell 脚本定时执行SQL语句等相关知识,可以在本站进行查询。

本文标签: