shell 自动执行sql

系统运维过程中,经常遇到向FTP上传下载数据,向DB读写数据等场景。FTP,SQLPLUS,MYSQL提供的都是交互式命令方式,在shell下也通过管道方式实现自动执行

 

1. FTP

1.1 -s参数指定文件名

vi ftpcmd.txt
open 192.168.5.10
myuser
mypass
get 1.txt 
bye
 
ftp -s:tpcmd.txt            // -s直接指定命令文件,可以完成自动测试,一般用于暴力破解FTP密码

  

1.2 "<<EOF" 表示后续输入作为子命令或子shell的输入,直到遇到EOF,常用于交互式命令中的自动输入。也可用于shell的多行注释。

ftp -n <<!
open 192.168.5.10
user myuser mypass
binary
cd ${Destdir}
get $File
close
bye
!

 

2. DB

#Oracle
sqlplus ${DbUser}/${DbPass}@${DbServ}:1521/${DbId} <<EOF
insert into TEST values(1,'hello');
commit;
EOF

#MYSQL
mysql -u root -p123456 -e "select count(*) from products";      #-e指定sql

 

3. redis

redis是非常流行的非关系型数据库,可通过下列方式执行批量的命令

cat data.txt | redis-cli -a 123456

cat读取data.ini 作为管道输入,data.ini 格式为一条命令一行

cat data.txt | redis-cli -a 123456 --pipe    

pipe指定用管道方式执行命令,这样可以提高执行效率。但此时的 data.ini 必须是dos格式的,每行以“\r\n“换行符结尾

 

 

你可能感兴趣的:(redis,ftp,sqlplus)