gpt4 book ai didi

bash - sudo'd mysqldump over ssh 语法?

转载 作者:行者123 更新时间:2023-11-29 05:32:58 27 4
gpt4 key购买 nike

我想要一个命令:

  • 使用我设置的公钥以用户 foo 的身份通过 ssh 进入我的服务器
  • 使用/etc/mysql/debian.cnf 默认文件执行一些数据库的 mysqldump
  • 到标准输出,所以我可以在本地通过管道传输它
  • 在服务器上远程执行 sudo 时,因为不允许用户 foo 读取/etc/mysql/debian.cnf。 foo 允许 sudo bash 但不允许 sudo mysqldump。

这是我想到的最好的:

echo 'mysqldump --defaults-file=/etc/mysql/debian.cnf dbname' | ssh -t -i keys/id_rsa -l foo example.com sudo bash -s

这个丑陋的野兽有效,但会产生:Pseudo-terminal will not be allocated because stdin is not a terminal.,我真的不喜欢 echo。一定有更好的方法吗?

最佳答案

ssh -i keys/id_rsa foo@example.com sudo bash -c "'mysqldump --defaults-file=/etc/mysql/debian.cnf dbname'"

这仅在 sudo 不需要询问密码时才有效。如果是这样,您需要使用 -t 选项来 ssh。

注意双引号和单引号。外部引号将被您的本地 shell 删除,整个 'mysqldump --defaults-file=/etc/mysql/debian.cnf dbname' 字符串将作为单个参数传递给 ssh . Ssh 会将其传递给远程 sudo,因此您的远程将看到单引号。远程 bash 需要单引号将 -c 之后的部分解释为单个参数。

关于bash - sudo'd mysqldump over ssh 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13224763/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com