小编Saa*_*hib的帖子

Bash 脚本和转义密码中的特殊字符

我一直在阅读这里已经提出的很多问题,但是,不知何故,没有什么对我有用。我有一个 bash 脚本,我必须在其中发送在远程机器上转储数据库的密码,所以它就像:

!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p#8111*@uu( my_database |  gzip -c >  my_database.sql.gz
Run Code Online (Sandbox Code Playgroud)

现在事情是这个密码有各种特殊字符: #8111*@uu(

如果我直接在应使用单引号内的密码运行上面的命令,那么它就可以工作:即。

/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'#8111*@uu(' my_database |  gzip -c >  my_database.sql.gz
Run Code Online (Sandbox Code Playgroud)

如果没有单引号,我会在结尾处出现 '(' 错误。

我还尝试像这样转义密码中的字符:

!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'\#8111\*\@uu(' my_database |  gzip -c >  my_database.sql.gz
Run Code Online (Sandbox Code Playgroud)

然后它给出访问被拒绝的错误。

我也尝试使用“源”即。将密码保存在另一个文件中:

文件pass.cre

MYPASSWORD='#8111*@uu('
Run Code Online (Sandbox Code Playgroud)

然后将该文件包含在 bash 脚本中:

!/bin/sh
source pass.cre
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p$MYPASSWORD my_database |  gzip -c >  my_database.sql.gz
Run Code Online (Sandbox Code Playgroud)

它似乎是从文件中读取 $MYPASSWORD …

bash scripts password

14
推荐指数
2
解决办法
10万
查看次数

了解通过 SSH 运行时脚本的行为

好吧,最近我一直面临着奇怪的行为。我有一个小的 bash 脚本,它只是远程获取 mysql 转储,然后将数据存储在服务器本身上,然后再同步到备份服务器。

#!/bin/sh
/usr/bin/ssh -p 82001 user@remotehost  "mysqldump -u db_user -pSomePass mydb" |  gzip -c >  /sql/mybackup.sql.gz
Run Code Online (Sandbox Code Playgroud)

但是我看到文件是在 /sql 下的本地服务器上创建的,而不是在远程服务器上创建的。

这是否意味着 mysqldump 正在远程服务器上工作,然后数据通过网络通过管道传输到这台本地机器,然后压缩并存储在此处所需的文件中......而不是远程?

server ssh bash rsync

2
推荐指数
1
解决办法
259
查看次数

标签 统计

bash ×2

password ×1

rsync ×1

scripts ×1

server ×1

ssh ×1