shell脚本自动输入密码scp /mysql/kaoqin/kaoqin.txt root@192.168.0.5:/u01/kaoqin
时间: 2023-08-12 16:04:07 浏览: 123
你可以使用 SSH 密钥对来实现自动化认证,而不必在脚本中明文输入密码。在本地机器上生成一对 SSH 密钥对(公钥和私钥),并将公钥添加到远程服务器的 `~/.ssh/authorized_keys` 文件中。这样,当你执行 SCP 命令时,就会自动使用私钥进行认证,而无需手动输入密码。
具体步骤如下:
1. 在本地机器上生成 SSH 密钥对:
```bash
ssh-keygen
```
一路回车即可,生成的密钥位于 `~/.ssh/id_rsa` 和 `~/.ssh/id_rsa.pub`。
2. 将公钥添加到远程服务器的 `~/.ssh/authorized_keys` 文件中:
```bash
ssh-copy-id root@192.168.0.5
```
需要输入远程服务器的密码一次,之后就可以自动将本地的公钥添加到 `authorized_keys` 文件中了。
3. 执行 SCP 命令时,不需要再输入密码:
```bash
scp /mysql/kaoqin/kaoqin.txt root@192.168.0.5:/u01/kaoqin
```
如果还是不想使用 SSH 密钥对,那么你可以使用 expect 工具来实现自动输入密码。需要先安装 expect,然后编写一个 expect 脚本,实现自动输入密码的功能。
相关问题
#!/bin/bash file='/mysql/dataload/kaoqin_'`date +"%Y%m"` if test -f "$file";then rm -rf $file fi /mysql/app/mysql/bin/mysql -uroot -poracle<<eof>/dev/null SET @SqlScript=CONCAT("select * into outfile '/mysql/dataload/kaoqin_",DATE_FORMAT(NOW(),'%Y%m'),"'"," fields terminated by ',' optionally enclosed by ","'",'"',"'"," escaped by ","'",'"',"'"," lines terminated by ","'","\\n","'"," FROM kaoqin.kaoqin where EXTRACT(YEAR_MONTH FROM signin_datetime) = EXTRACT(YEAR_MONTH FROM now());"); PREPARE Sql_Text FROM @SqlScript; EXECUTE Sql_Text; eof if test -f "$file";then scp $file oracle@192.168.0.6:/u01/dir fi分析
这是一个 Bash 脚本,主要功能是将 MySQL 数据库中 kaoqin 数据表中当月的数据导出到一个以当前年月命名的 CSV 文件中,并将该文件传输到另一台服务器上。
具体分析如下:
1. 第一行指定使用 Bash 解释器执行该脚本。
2. 第二行定义一个变量 file,用于存储导出的 CSV 文件路径,其中 `date +"%Y%m"` 表示获取当前年月并格式化为 YYYYMM 的形式。
3. 第三行使用 test 命令检查该文件是否存在,如果存在则删除该文件。
4. 第四行使用 MySQL 命令行工具连接到本地 MySQL 数据库,并执行一段 SQL 语句,将查询结果导出到指定的 CSV 文件中。具体 SQL 语句是根据当前年月动态生成的,使用 PREPARE 和 EXECUTE 命令执行。
5. 第五行使用 test 命令检查该文件是否存在,如果存在则使用 scp 命令将该文件传输到另一台服务器的 /u01/dir 目录下。
总体来说,该脚本实现了自动化导出 MySQL 数据表的功能,并将导出的数据文件传输到另一个服务器。
阅读全文