天天看点

shell脚本收藏

<code>#!/bin/sh </code>

<code>if</code> <code>[ </code><code>"$#"</code> <code>-</code><code>ne</code> <code>"1"</code> <code>]; </code><code>then</code> 

<code>    </code><code>echo</code> <code>"usage: $0 &lt;svn_url&gt;"</code> 

<code>    </code><code>exit</code> <code>1</code>

<code>fi</code> 

<code>release_v=$(</code><code>date</code> <code>+%Y%m%d) </code>

<code>svn_user=</code><code>"deploy"</code> 

<code>svn_passwd=“*******” </code>

<code>svn_url=$1 </code>

<code>target_path=</code><code>"res"</code> 

<code>svn checkout --non-interactive --trust-server-cert --username </code><code>"${svn_user}"</code> <code>--password </code><code>"${svn_passwd}"</code> <code>"${svn_url}"</code> <code>"${target_path}"</code> 

<code>mkdir</code> <code>$release_v </code>

<code>mv</code> <code>res $release_v </code>

<code>cp</code> <code>crossdomain.xml $release_v</code>

<code>#!/bin/sh</code>

<code>if</code> <code>[[ $UID -</code><code>ne</code> <code>0 ]]; </code><code>then</code>

<code>        </code><code>echo</code> <code>"You must run as root"</code>

<code>        </code><code>exit</code>

<code>fi</code>

<code>localtime=`</code><code>date</code> <code>+%Y%m%d_%H%M`</code>

<code>backup_server_name=s1</code>

<code>port=($(</code><code>netstat</code> <code>-lntp | </code><code>grep</code> <code>redis-server | </code><code>awk</code> <code>'{print $4}'</code> <code>| </code><code>awk</code> <code>'{split($0,ports,":");print ports[length(ports)]}'</code> <code>| </code><code>sort</code> <code>| </code><code>uniq</code><code>))</code>

<code>num=${</code><code>#port[@]}</code>

<code>backup_file_name_6379=redis_${backup_server_name}_6379_${localtime}.</code><code>tar</code><code>.gz</code>

<code>backup_file_name_6380=redis_${backup_server_name}_6380_${localtime}.</code><code>tar</code><code>.gz</code>

<code>backup_path=</code><code>/data/backup/redis/local</code>

<code>if</code> <code>[[ $num -</code><code>eq</code> <code>0 ]];</code><code>then</code>

<code>    </code><code>echo</code> <code>-e </code><code>"n33[40;31m No redis server is running33[0mn"</code>

<code>#压缩</code>

<code>for</code> <code>i </code><code>in</code> <code>${port[@]};</code><code>do</code>

<code>    </code><code>if</code> <code>[ ${i} -</code><code>eq</code> <code>6379 ]; </code><code>then</code>

<code>        </code><code>cd</code> <code>/data/redis/var</code>

<code>        </code><code>tar</code> <code>czvf ${backup_file_name_6379} dump.rdb</code>

<code>    </code><code>elif</code> <code>[ ${i} -</code><code>eq</code> <code>6380  ]; </code><code>then</code>

<code>        </code><code>cd</code> <code>/data/redis/var-6380</code>

<code>        </code><code>tar</code> <code>czvf ${backup_file_name_6380} dump.rdb</code>

<code>    </code><code>else</code>

<code>        </code><code>exit</code> <code>1</code>

<code>    </code><code>fi</code>

<code>done</code>

<code>#移动</code>

<code>if</code> <code>[ ! -d ${backup_path} ]; </code><code>then</code>

<code>    </code><code>mkdir</code> <code>-p ${backup_path}</code>

<code>        </code><code>mv</code> <code>/data/redis/var/</code><code>${backup_file_name_6379} ${backup_path}</code>

<code>    </code><code>if</code> <code>[ ${i} -</code><code>eq</code> <code>6380 ];</code><code>then</code>

<code>        </code><code>mv</code> <code>/data/redis/var-6380/</code><code>${backup_file_name_6380} ${backup_path}</code>

<code>#同步</code>

<code>#rsync -avIz $backup_path/*.tar.gz  192.168.1.9:/data/s1_server/redis/s1/</code>

<code>#清理</code>

<code>find</code> <code>${backup_path}/ -</code><code>type</code> <code>f -name </code><code>"*.tar.gz"</code>  <code>-ctime +30 -</code><code>exec</code> <code>rm</code> <code>-rf {} ;</code>

<code>#</code>

<code># php-fpm - this script starts and stops the php-fpm daemin</code>

<code># chkconfig: - 85 15</code>

<code># processname: php-fpm</code>

<code># config:      /usr/local/php/etc/php-fpm.conf</code>

<code> </code> 

<code>set</code> <code>-e</code>

<code>#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin</code>

<code>DESC=</code><code>"php-fpm daemon"</code>

<code>NAME=php-fpm</code>

<code>DAEMON=</code><code>/usr/local/php/sbin/</code><code>$NAME     </code><code>#这里设成自己的目录</code>

<code>CONFIGFILE=</code><code>/usr/local/php/etc/php-fpm</code><code>.conf   </code><code>#这里设成自己的目录</code>

<code>PIDFILE=</code><code>/var/run/</code><code>$NAME.pid   </code><code>#这里设成自己的目录</code>

<code>SCRIPTNAME=</code><code>/etc/init</code><code>.d/$NAME   </code><code>#这里设成自己的目录</code>

<code># If the daemon file is not found, terminate the script.</code>

<code>test</code> <code>-x $DAEMON || </code><code>exit</code> <code>0</code>

<code>d_start(){</code>

<code>   </code><code>$DAEMON -y $CONFIGFILE || </code><code>echo</code> <code>-n </code><code>" already running"</code>

<code>}</code>

<code>d_stop(){</code>

<code>   </code><code>kill</code> <code>-QUIT `</code><code>cat</code> <code>$PIDFILE` || </code><code>echo</code> <code>-n </code><code>" no running"</code>

<code>d_reload(){</code>

<code>   </code><code>kill</code> <code>-USR2 `</code><code>cat</code> <code>$PIDFILE` || </code><code>echo</code> <code>-n </code><code>" could not reload"</code>

<code>case</code> <code>"$1"</code> <code>in</code>

<code>   </code><code>start)</code>

<code>       </code><code>echo</code> <code>-n </code><code>"Starting $DESC: $NAME"</code>

<code>       </code><code>d_start</code>

<code>       </code><code>echo</code> <code>"."</code>

<code>       </code><code>;;</code>

<code>   </code><code>stop)</code>

<code>       </code><code>echo</code> <code>-n </code><code>"Stopping $DESC: $NAME"</code>

<code>       </code><code>d_stop</code>

<code>   </code><code>reload)</code>

<code>       </code><code>echo</code> <code>-n </code><code>"Reloading $DESC configuration..."</code>

<code>       </code><code>d_reload</code>

<code>       </code><code>echo</code> <code>"Reloaded."</code>

<code>   </code><code>restart)</code>

<code>       </code><code>echo</code> <code>-n </code><code>"Restarting $DESC: $NAME"</code>

<code>       </code><code># Sleep for two seconds before starting again,</code>

<code>       </code><code># this should give the nginx daemon some time to perform a graceful stop</code>

<code>       </code><code>sleep</code> <code>2</code>

<code>   </code><code>*)</code>

<code>       </code><code>echo</code> <code>"Usage: $SCRIPTNAME {start|stop|restart|force-reload)"</code> <code>&gt;&amp;2</code>

<code>       </code><code>exit</code> <code>3</code>

<code>esac</code>

<code>exit</code> <code>0</code>

<code>3.随机用户密码生成</code>

<code>i  </code><code>passwd</code><code>.sh</code>

<code>#创建一个 10 位的随机的密码。。。</code>

<code>#!/bin/bash  </code>

<code>a=(a b c d e A B C D E F @ $ % ^ 0 1 2 3 4 5 6 7 8 9)  </code>

<code>for</code> <code>((i=0;i&lt;10;i++));</code><code>do</code>  

<code>         </code><code>echo</code> <code>-n ${a[$RANDOM % ${</code><code>#a[@]}]}  </code>

<code>done</code>  

<code>echo</code>  

<code>vi</code>   <code>useradd</code><code>.sh </code>

<code>#创建5个账号,引用了随机的密码。</code>

<code>i=1</code>

<code>while</code> <code>[ $i -</code><code>le</code> <code>5 ]  </code>

<code>do</code>  

<code>    </code><code>useradd</code> <code>red$i   </code>

<code>a=`sh .</code><code>/passwd</code><code>.sh`  </code>

<code>    </code><code>echo</code> <code>" red$i:$a  "</code> <code>&gt;&gt; sumuserpasswd</code>

<code>    </code><code>echo</code> <code>"~~~~~~~~~~~"</code> <code>&gt;&gt; sumuserpasswd  </code>

<code>    </code><code>echo</code> <code>red$i:$a|chpasswd </code>

<code>#   echo $a | passwd –-stdin red"$i"</code>

<code>    </code><code>let</code> <code>i++  </code>

自己用的

1.查看本机跑的进程

ps -ef|awk '{if($2&gt;2023){print $0}}'|awk -F " "  '{OFS=" " ;for(i=8;i&lt;=NF;i++)printf $i" ";if (NF &gt; 7) printf "\n";}'|egrep -v "awk|-bash|pts|crond|flush|jbd2|udevd|ps|libexec|mingetty|gdm-password|gnome-power-manager|ext4-dio-unwrit|pulseaudio|metacity|gnome|dbus-daemon|dbus-launch|console-kit-daemon|Xorg|gdm-binary|rhsmcertd|atd|CMD|abrtd|sshd|rsyslogd"|uniq

4.app简单发布脚本

<code>#!/bin/bash</code>

<code>#Date=`date +%Y-%m-%d-%k-%M-%S`</code>

<code>. </code><code>/</code><code>etc</code><code>/</code><code>init.d</code><code>/</code><code>functions</code>

<code>Date</code><code>=</code><code>`date </code><code>+</code><code>%</code><code>Y</code><code>-</code><code>%</code><code>m</code><code>-</code><code>%</code><code>d`</code>

<code>scapk</code><code>=</code><code>"1.apk"</code>

<code>project</code><code>=</code><code>$</code><code>2</code>

<code>PRO</code><code>=</code><code>$</code><code>1</code>

<code>Appdir</code><code>=</code><code>"/home/app/$PRO"</code>

<code>[ ! </code><code>-</code><code>d $Appdir ] &amp;&amp; mkdir </code><code>-</code><code>p $Appdir &amp;&amp; mkdir </code><code>-</code><code>p $Appdir</code><code>/</code><code>{old,new}</code>

<code>function Svn() {</code>

<code>if</code> <code>[ </code><code>-</code><code>f $Appdir</code><code>/</code><code>newversion.txt ];then</code>

<code>oldappname</code><code>=</code><code>`cat $Appdir</code><code>/</code><code>newversion.txt`</code>

<code>yes|cp </code><code>-</code><code>r $Appdir</code><code>/</code><code>newversion.txt $Appdir</code><code>/</code><code>oldversion.txt</code>

<code>cd $Appdir</code>

<code>svn checkout http:</code><code>/</code><code>/</code><code>svn.com</code><code>/</code><code>svn</code><code>/</code><code>a</code><code>/</code><code>trunk</code><code>/</code><code>app</code><code>/</code><code>$project </code><code>-</code><code>-</code><code>no</code><code>-</code><code>auth</code><code>-</code><code>cache </code><code>-</code><code>-</code><code>username </code><code>'test'</code> <code>-</code><code>-</code><code>password </code><code>'123456'</code>

<code>cd $project</code>

<code>#lastre=`ls -l --color=auto -rt|tail -1|awk '{print $NF}'`</code>

<code>lastre</code><code>=</code><code>`ls </code><code>-</code><code>l|tail </code><code>-</code><code>1</code><code>|awk </code><code>'{print $NF}'</code><code>`</code>

<code>cd $lastre</code>

<code>appname</code><code>=</code><code>`ls </code><code>-</code><code>l|grep </code><code>".*release*.apk"</code><code>|awk </code><code>'{print $NF}'</code><code>`</code>

<code>echo </code><code>"$appname"</code> <code>&gt; $Appdir</code><code>/</code><code>newversion.txt</code>

<code>cp </code><code>-</code><code>r $appname $Appdir</code><code>/</code><code>new</code>

<code>yes|cp </code><code>-</code><code>r $scapk  $Appdir</code><code>/</code><code>old</code><code>/</code><code>$oldappname</code>

<code>yes|cp </code><code>-</code><code>r $project</code><code>/</code><code>$lastre</code><code>/</code><code>$appname $scapk</code>

<code>find . </code><code>-</code><code>name </code><code>"*.apk"</code> <code>-</code><code>type</code> <code>f </code><code>-</code><code>mtime </code><code>+</code><code>30</code> <code>-</code><code>exec</code> <code>rm </code><code>-</code><code>rf {} \;</code>

<code>case $</code><code>1</code> <code>in</code>

<code>svn)</code>

<code>Svn</code>

<code>;;</code>

<code>*</code><code>)</code>

<code>printf </code><code>"sh -x app.sh svn c c \n"</code>

5.检测是否发送邮件

<code>if</code> <code>[ </code><code>-</code><code>f </code><code>/</code><code>root</code><code>/</code><code>.bash_profile ];then</code>

<code>source </code><code>/</code><code>root</code><code>/</code><code>.bash_profile</code>

<code>fi </code>

<code>sdate</code><code>=</code><code>`date </code><code>"+%Y-%m-%d %H:%M:%S"</code><code>`</code>

<code>sql</code><code>=</code><code>"use db;select status,create_time from atable where round((UNIX_TIMESTAMP('${sdate}')-UNIX_TIMESTAMP(create_time))/3600)&gt;24"</code><code>;</code>

<code>MysqlUser</code><code>=</code><code>'user'</code>

<code>PassWord</code><code>=</code><code>'password'</code>

<code>MysqlCmd</code><code>=</code><code>"mysql -h host -u"</code><code>$MysqlUser</code><code>" -p"</code><code>$PassWord""</code>

<code>ddate</code><code>=</code><code>`date </code><code>"+%H:%M:%S"</code><code>`</code>

<code>alert_value</code><code>=</code><code>1</code>

<code>problem_file</code><code>=</code><code>'sql.txt'</code>

<code>if</code> <code>[ </code><code>-</code><code>e ${problem_file}</code><code>-</code><code>$alert_value ];then</code>

<code>cd </code><code>/</code><code>home</code><code>/</code><code>shell</code>

<code>datefile</code><code>=</code><code>`stat ${problem_file}</code><code>-</code><code>$alert_value|grep Modify|awk </code><code>'{print $2}'</code><code>`</code>

<code>datenow</code><code>=</code><code>`date </code><code>"+%Y-%m-%d"</code><code>`</code>

<code>[ $datefile !</code><code>=</code> <code>$datenow ] &amp;&amp; rm </code><code>-</code><code>rf ${problem_file}</code><code>-</code><code>$alert_value</code>

<code>exit </code><code>0</code>

<code>if</code> <code>[ ! </code><code>-</code><code>e ${problem_file}</code><code>-</code><code>$alert_value ];then</code>

<code>$MysqlCmd </code><code>-</code><code>e </code><code>"$sql"</code><code>&gt;.</code><code>/</code><code>sql.txt</code>

<code>sleep </code><code>5</code>

<code>problem_value</code><code>=</code><code>`cat $problem_file|wc </code><code>-</code><code>l`</code>

<code>if</code> <code>[ $problem_value </code><code>-</code><code>gt $alert_value ] &amp;&amp; [ ! </code><code>-</code><code>e ${problem_file}</code><code>-</code><code>$alert_value ];then</code>

<code>    </code><code>subject</code><code>=</code><code>`echo </code><code>-</code><code>n </code><code>"subject"</code> <code>| base64`</code>

<code>    </code><code>/</code><code>usr</code><code>/</code><code>local</code><code>/</code><code>zabbix</code><code>/</code><code>scripts</code><code>/</code><code>sendEmail  </code><code>-</code><code>f [email protected] </code><code>-</code><code>t [email protected] </code><code>-</code><code>s smtp.a.com </code><code>-</code><code>u </code><code>"=?utf-8?b?$subject?="</code> <code>-</code><code>o message</code><code>-</code><code>content</code><code>-</code><code>type</code><code>=</code><code>text </code><code>-</code><code>o message</code><code>-</code><code>charset</code><code>=</code><code>utf</code><code>-</code><code>8</code>  <code>-</code><code>xu [email protected] </code><code>-</code><code>xp password </code><code>-</code><code>m </code><code>"messages"</code>

<code>    </code><code>touch ${problem_file}</code><code>-</code><code>$alert_value</code>

00 */1 * * * root /bin/bash /home/shell/test.sh &gt;/dev/null 2&gt;&amp;1 &amp;

本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1670448,如需转载请自行联系原作者