美文网首页
循环创建目录 上传下载ftp

循环创建目录 上传下载ftp

作者: oasis_m | 来源:发表于2020-03-21 19:34 被阅读0次

声明:所有文章只作为学习笔记用,转载非原创

顺序执行多条命令:command1;command2;command3;
有条件的执行多条命令:which command1 && command2 || command3
expect 命令 https://www.cnblogs.com/saneri/p/10819348.html 
awk 数组
print 与 printf 格式化输出

管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。

管道命令必须要能够接受来自前一个命令的数据成为standard input继续处理才行
![image](https://img.haomeiwen.com/i12275317/f08758db656b340b.png?imageMogr2/auto-orient/strip|imageView2/2/w/455/format/webp)

#上传下载 ftp  
非交互式 下载文件 https://www.jianshu.com/p/71e9c9a9c31f 
 
#!/bin/bash
 
#上传文件
ftp -n<<-EOF 
open  ftpIP #FTP服务器IP
user ftpUser ftpPasswd #用户名 密码
passive #被动模式 active 主动模式
binary # 二进制传输
hash   #切换散列符号(#)打印
cd Up/ #ftp上文件目录
lcd /home/... #本地目录
prompt   #切换交互式提示
mput *#多文件上传 单文件上传put
close
bye #退出
EOF
echo "commit to ftp successfully"
 
#下载文件
ftp -n <<EOF
open ftpIP
user ftpUser ftpPasswd
passive
binary
cd Down/
lcd /home/...
hash
prompt off
mget *
close
bye
EOF
echo "download from ftp successfully"
 




#
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
if ! crontab -l | grep ntpdata &>/dev/null ; then 
(echo "* 1 * * * ntp time.windows.com >/dev/null 2>&1" ; crontab -l ) | crontab 
sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinx/config
#历史命令显示操作时间
if  ! grep HISTTIMEFORMAT /etc/bashrc; then
    echo `export HISTTIMEFORMAT="%F %T `whoami` "` >> /etc/bashrc
fi
#禁止定时任务发送邮件
sed  -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab

#循环创建目录:
cat yh.txt 
gsyh
xyyh
zsyh
zdyh

#!/bin/bash
id=(B1111 B2222 B3333 B4444)
for i in `cat /workshare/yh.txt`
do
   mkdir -p /workshare/dir/$i/
   for((l=0;l<${#id[*]};l++))
   do
       mkdir -p /workshare/dir/$i/${id[l]}/{1_upload,2_upload}
   done
done



#创建多个用户
#!/bin/bash
#接受参数
user_list=$@
#生成最后的文件
user_file=./user.info
for user in $user_list; do
if ! id $user &>/dev/null; then
   pass =$(echo $RANDOM | md5sum |cut -c 1-8)
   useradd $user
   echo $pass | passwd --stdin $user
   # stdin 从标准输入管道读入新的密码
  echo  "$pass $user" >> $user_file
  echo " $user create sucess"
else 
  echo "$user already exist"
fi
done

#监测磁盘等
多种写法:https://blog.csdn.net/qq_43595047/article/details/84034858 

#!/bin/bash

function cpu(){
 util=$(vmstat | awk '{if(NR==3) print $13+$14}')
 iowait=$(vmstat | awk '{if(NR==3) print $16}')
echo "cpu 使用率: ${util}% , 等待磁盘IO响应使用率 ${iowait}%"
}

function mem(){
  total=$(free -m | awk '{if(NR==2) printf "%.1f", $2/1024}')
  used=$(free -m | awk '{if(NR==2) printf "%.1f", ($2-$NF)/1024}')
  available=$(free -m | awk '{if(NR==2) printf "%.1f", $NF/1024}')
  echo "内存总大小: ${total}G "
  echo "使用总大小: ${used}G "
  echo "可用总大小: ${available}G "
}

function disk(){
 fs=$(df -h | awk '/^\/dev/{print $1}')
# 本机电脑会多匹配需要改正
for p in $fs; do 
    mounted=$(df -h |awk -v v1=$p '$1==v1{print $NF}')
    #size,used 同上
   echo "硬盘挂载点为 ${mounted}"
done 
  used=$(free -m | awk '{if(NR==2) printf "%.1f", ($2-$NF)/1024}')
  available=$(free -m | awk '{if(NR==2) printf "%.1f", $NF/1024}')
  echo "内存总大小: ${total}G "
  echo "使用总大小: ${used}G "
  echo "可用总大小: ${available}G "
}

function tcp_statut(){
#利用awk数组取出值 
  echo tcp_status=`netstat -natlp | awk '{arry[$6]++} END{for(i in arry) printf i":"arry[i]" "}'`

}
cpu
mem

#awk数组 可以异步awk 单元
   key 和 value
   array[index] = value 数组名array,下标index以及相应的值value。


awk  -F ':'  '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd

#awk -v 的使用 :shell中的变量在awk程序中无法使用是一个新的进程去处理的,因此就需要-v 来向awk程序中传参数了,你比如在[shell程序]中有一个变量a=15,你在awk程序中直接使用变量a是不行的,而你用awk -v b=a, 这样在AWK程序中就可以使用变量b了!也就相当于使用a了!

#awk -v foo=hello -v bar=world 'BEGIN {print foo,bar}'

相关文章

网友评论

      本文标题:循环创建目录 上传下载ftp

      本文链接:https://www.haomeiwen.com/subject/pyvuyhtx.html