sudo'd mysqldump over ssh syntax?



我想要一个命令:

  • ssh作为用户foo进入我的服务器,使用我设置的公共密钥
  • 使用/etc/mysql/debian.cnf执行某些数据库的mysqldump defaults-file
  • to stdout,所以我可以在本地管道
  • 在远程执行服务器上执行sudo时,因为不允许用户foo读取/etc/mysql/debian.cnf。允许foo 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。

请注意双引号和单引号。外部引号将被您的本地外壳带走,整个'mysqldump --defaults-file=/etc/mysql/debian.cnf dbname'字符串将作为一个参数传递给SSH。SSH将将其传递给远程Sudo,因此您的遥控器将看到单个引号。遥控器需要单个引号来解释-c之后的零件为单个参数。

相关内容

  • 没有找到相关文章

最新更新