linux脚本

linux--安全加固脚本

感情迁移 提交于 2019-12-10 11:08:28
Linux安全加固配置 #! /bin/bash# copyright by hwb# Function:对账户的密码的一些加固read -p "设置密码最多可多少天不修改:" Aread -p "设置密码修改之间最小的天数:" Bread -p "设置密码最短的长度:" Cread -p "设置密码失效前多少天通知用户:" Dsed -i '/^PASS_MAX_DAYS/c\PASS_MAX_DAYS '$A'' /etc/login.defssed -i '/^PASS_MIN_DAYS/c\PASS_MIN_DAYS '$B'' /etc/login.defssed -i '/^PASS_MIN_LEN/c\PASS_MIN_LEN '$C'' /etc/login.defssed -i '/^PASS_WARN_AGE/c\PASS_WARN_AGE '$D'' /etc/login.defsecho "已对密码进行加固,新用户不得和旧密码相同,且新密码必须同时包含数字、小写字母,大写字母!!"sed -i '/pam_pwquality.so/c\password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8

Linux 下通过脚本实现远程自动备份

一世执手 提交于 2019-12-10 08:27:51
考虑到在本机上备份数据,一旦该机器硬盘出现故障,数据无法取出。远程手动备份数据费时费力且不及时。最好的方法就是通过脚本实现远程自动互备。但远程无论是通过SSH登陆,还是通过scp拷贝文件都需要输入密码。为了克服这个问题,首先需要实现不需要密码的SSH登陆,这样就可以使用rsync,scp,rexec等命令来做的远程备份了。 1. 设置无需密码的ssh登陆,方法如下: 假设A,B两服务器,现在需要在A机上用root登陆B机,而不需要输入密码,那我们可按照下面的步骤来做: 1)在A机上生成钥匙对,执行以下命令: ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa Enter passphrase (empty for no passphrase):直接回车 Enter same passphrase again:直接回车 Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key

PHP如何写扩展

╄→尐↘猪︶ㄣ 提交于 2019-12-10 07:29:40
PHP取得成功的一个主要原因之一是她拥有大量的可用扩展。web开发者无论有何种需求,这种需求最有可能在PHP发行包里找到。PHP发行包包括支持各种数据库,图形文件格式,压缩,XML技术扩展在内的许多扩展。 扩展API的引入使PHP3取得了巨大的进展,扩展API机制使PHP开发社区很容易的开发出几十种扩展。现在,两个版本过去了,API仍然和PHP3时的非常相似。扩展主要的思想是:尽可能的从扩展编写者那里隐藏PHP的内部机制和脚本引擎本身,仅仅需要开发者熟悉API。 有两个理由需要自己编写PHP扩展。第一个理由是:PHP需要支持一项她还未支持的技术。这通常包括包裹一些现成的C函数库,以便提供PHP接口。例如,如果一个叫FooBase的数据库已推出市场,你需要建立一个PHP扩展帮助你从PHP里调用FooBase的C函数库。这个工作可能仅由一个人完成,然后被整个PHP社区共享(如果你愿意的话)。第二个不是很普遍的理由是:你需要从性能或功能的原因考虑来编写一些商业逻辑。 如果以上的两个理由都和你没什么关系,同时你感觉自己没有冒险精神,那么你可以跳过本章。 本章教你如何编写相对简单的PHP扩展,使用一部分扩展API函数。对于大多数打算开发自定义PHP扩展开发者而言,它含概了足够的资料。学习一门编程课程的最好方法之一就是动手做一些极其简单的例子,这些例子正是本章的线索。一旦你明白了基础的东西

ITerm2下使用ssh访问Linux

限于喜欢 提交于 2019-12-10 06:33:14
通常情况下,iTerm2访问远程Linux使用ssh,与Termial基本一样,方法如下: ssh <用户名>@<ip> 然后输入访问的密码即可。当然还有的时候需要指定访问端口。 ssh -p <端口号> <用户名>@<ip地址> 如果在iTerm2下的操作与termial一样,我还用它干甚? 当然iTerm2有它特有的功能,这里使用它的是Profiles这个功能。 我们将远程访问的相关内容写成一个脚本,然后在Profile里调用即可。 脚本内容如下: #!/usr/bin/expect -f set user <用户名> set host <ip地址> set password <密码> set timeout -1 spawn ssh $user@$host expect "*assword:*" send "$password\r" interact expect eof 把这个脚本保存起来,放到一个目录下(这个可以根据自己的实际情况来定,没有特殊性) 接下来,就是如何调用这个脚本了. 接下来, 使用命令 expect <保存的脚本完整路径> 保存即可。 接下来就是如何使用了。使用方法也很简单,打开iTerm2后,选择菜单Profiles下自定的profiles即可。 来源: oschina 链接: https://my.oschina.net/u/1765961/blog

linux复习1(shell脚本)

删除回忆录丶 提交于 2019-12-10 01:49:57
一、习题 1. 脚本编程:求200内的质数,并输出。 1 for ( ( i=2 ; i<=200 ; i+ + ) ) 2 do 3 flag=1 4 for ( ( j=2 ; j<i ; j+ + ) ) 5 do 6 model=$ [ $i % $j ] 7 if [ $model = 0 ] ; then 8 flag=0 9 break 10 fi 11 done 12 if [ $flag = 1 ] ; then 13 echo $i 14 fi 15 done 2. 编写shell脚本,循环打印这句话中字母数不大于5的单词:“It is no exception with the issue of examination.” 1 while [ 1=1 ] 2 do 3 for i in It is not exception with issue of examination 4 do 5 len=$ { #i} 6 if [ $len -le 6 ] ; then 7 echo $i 8 fi 9 done 10 done 3. 编写shell脚本,接收用户输入的数字来打印一个等腰三角形,例如: 输入 5,打印结果Please Enter a number:5 1 echo Please Enter a number: 2 read num 3 4 for

dos下编辑过sh脚本后无法运行

谁说胖子不能爱 提交于 2019-12-10 00:05:56
情景: 同样的的脚本,在不同的机器下运行有的可以成功,有的运行失败, 前提:sh脚本windos下编辑过。 脚本在windows上修改之后,在每行尾部多了个 ^M,导致sh脚本在执行的时候可能shbang解析不了,导致脚本执行不了 报错 Syntax error: “(” unexpected (expecting “then”) 语法解析错误 解决: 在Linux查看^M,需要使用如下命令: vim下 :e ++ff=unix % 去掉^M的方法: 1.在 Vim 的命令模式中输入 :%s/^M$//g 后,回车即会自动删除该文件中的所有 ^M 字符。 ^M 注意要用 Ctrl + V Ctrl + M 来输入 2.cat filename1 | tr -d "\r" > newfile sed -e "s/^V^M//" filename > outputfilename 4.tr -d '\015' < filename> newfile 简单的,直接使用dos2unix, 将dos下的文件转换成unix文件,可以将后面的^M去掉。 来源: https://www.cnblogs.com/0916m/p/12014133.html

linux jar 启动shell 脚本

风格不统一 提交于 2019-12-09 23:33:20
#!/bin/bash APP_NAME=/data/wwwroot/app.jar #使用说明,用来提示输入参数 usage() { echo "Usage: sh app.sh [start|stop|restart|status]" exit 1 } #检查程序是否在运行 is_exist(){ pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'` #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } #启动方法 start(){ is_exist if [ $? -eq 0 ]; then echo "${APP_NAME} is already running. pid=${pid}" else nohup java -jar ${APP_NAME} >app.out 2>&1 & fi } #停止方法 stop(){ is_exist if [ $? -eq "0" ]; then kill -9 $pid else echo "${APP_NAME} is not running" fi } #输出运行状态 status(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME

shell 脚本declare声明变量

二次信任 提交于 2019-12-09 17:39:50
linux bash shell之declare declare 或 typeset 内建命令(它们是完全相同的)可以用来限定变量的属性.这是在某些编程语言中使用的定义类型不严格的方式。命令 declare 是bash版本2之后才有的。命令 typeset 也可以在ksh脚本中运行 。 declare/typeset 选项 -r 只读 #!/bin/bash declare -r haha=leaf echo $haha haha=what echo what is $haha ? 运行结果如下,可见声明后再也无法修改。 [root@mfsbackup mnt]# ./declare2.sh leaf ./declare2.sh: line 11: haha: readonly variable what is leaf ? -i 整形 #!/bin/bash declare -i num num=1 echo num="$num" num=2 echo num="$num" num=three echo num="$num" num=1 num=$num+1 echo num="$num" [root@mfsbackup mnt]# ./declare3.sh num=1 num=2 num=0 num=2 #!/bin/bash n=10/5 echo n=$n typeset

ubuntu环境下QT+python混合编程

微笑、不失礼 提交于 2019-12-09 17:35:55
最近一个在做一个项目,框架全是用qt搭建的,但是里面有个功能需要调用一下之前写的python脚本。 具体环境:ubuntu16.04 python3.5(网上好多资料是关于python2.0的,存在一些区别) qt5.8.0 尝试了以下几种办法,踩了很多坑,记录一下。、 1. Py_Initialize实现参数传递 因为需要向python脚本内传递参数,查阅之后发现可以在QT内导入python包,然后通过Py_Initialize这种方法实现参数传递。 具体操作: 1) 在.pro文件中导入python库(找到自己虚拟机内python的安装路径) INCLUDEPATH += -I /usr/include/python3.5/ LIBS += -L /usr/lib/python3.5/config-3.5m-x86_64-linux-gnu -lpython3.5 2)由于QT中定义了slots作为关键了,而python3中有使用slot作为变量,所以在编译时会有冲突。 需要修改python库中的object.h文件,因为该文件是系统文件,可以在终端中sudo gedit进行修改: sudo gedit /usr/include/python3.5/object.h //应该是在440-448行 typedef struct{       const char* name;  

linux下shell的十个最佳实践

泄露秘密 提交于 2019-12-09 14:40:29
每一个在UNIX/ Linux 上工作的程序员可能都擅长shell脚本编程。 但大家解决问题的方式却不尽相同,这要取决于对专业知识的掌握程度、使用命令的种类、看待问题的方式等等。对于那些处在shell脚本编程初级阶段的程序员来说,遵循一些恰当的做法可以帮助你更快、更好的学习这些编程技巧。下面,我们就来讨论这些能帮助你学习shell脚本编程的方法吧。 1、多动手 一些人会先通读整本教材后再上机练习。这种方法可能适用于一些人,但我却不太看好它。我的建议是,先学一些最基础的,能够让你开始编码的知识就可以了。之后,动手写一些简单的程序。一旦你由于知识上的欠缺而不得不停止时,再回到书本上去读你想要了解的那部分,然后继续做你的项目。如此周而复始,不断提高你的水平。这种边学边做的方法曾让我受益良多。 2、善用 命令提示符 有时候,我们写的脚本中有一些错误。我们修改错误,运行脚本,但系统再次报错。并且这个改错报错的过程可能会发生很多次。碰到这些情况,首先需要找到有问题的行或命令,这可以通过一些调试语句来轻松做到。一旦发现这条语句,尝试在命令提示符下执行相同的语句。如果它在命令提示符下开始正常运行,你就可以容易的推断出它不能正常运行的原因了。可能是由于某些错误输入的命令,或者是某些 环境变量 不匹配,或者是从不同的地方引用了某个 二进制 文件等等。这种方法会让调试变得简单易行。 关于 shell