使用 python ssh 连接安装 mysql-server

使用 python ssh 连接安装 mysql-server

我正在用 Python 编写一个脚本,该脚本通过 ssh 连接到服务器,然后安装一些软件包。但是对话框有问题,我可以在对话框中输入 root 密码 - 我不知道如何在那里发送数据。一旦我尝试这样做,我的 apt(使用 Debian Lenny)就会崩溃。

这里有一些信息: - Debian Lenny - 使用界面更简单的 PySSH,代码如下所示:

clientSSH = SSHClient( self.ip, 'root', self.rootPassword, None )
clientSSH.login()
clientSSH.run_command('apt-get install mysql-server mysql-client php5')
clientSSH.run_command('Y')
#I Don't know how send root passwd here
clientSSH.logout()

答案1

使用apt-get -y

  • 参见 apt-get(1)

如果你没有 SSH,请使用无密码的 SSH 密钥

http://www.debian-administration.org/articles/152

答案2

我建议尝试:

apt-get -y install mysql-server mysql-client php5

开关-y默认对所有问题都回答是。

就 MySQL 的根密码而言,Pexpect如果您发现自己无法通过 PySSH 传输密码或无法可靠地确定何时发送密码,则可能必须使用类似的模块来发送密码。

更新答案:

我对此进行了一些研究,发现您有几个选择,而且对您来说都相当重要:

  1. 使用 Pexpect。
  2. 构建自定义 .deb,从“postinst”脚本中删除密码提示
  3. 使用 apt-get 和 dpkg 解压但不配置 MySQL。

选项 1:重写脚本以使用 Pexpect(这应该能够处理 ncurses)

选项 2:

# get the original .deb: 
apt-get -y --download-only -q install mysql-server
# need a tempdir for this
mkdir ~/tmp;cd ~/tmp
cp /var/cache/apt/mysql-version.deb .
ar -x mysql-version.deb
mkdir DEBIAN
tar xf control.tar.gz -C DEBIAN
vim DEBIAN/postinst
# edit the lines about prompting for rootpw in here and replace $rootpw with what you want, 
# or however you choose to accomplish this
tar xf data.tar.gz -C .
dpkg-deb -b . mysql-server-version-noprompt.deb

这就是你的新 .deb。我还没有测试过,所以 YMMV。

选项 3:

# Skip postinst entirely
apt-get -q -y --download-only mysql-server
dpkg --unpack /var/cache/apt/mysql-server-version.deb
# instead of dpkg you can use dpkg-deb:
dpkg-deb -X /var/cache/apt/mysql-server-version.deb /

这将完全跳过安装后步骤——查看脚本以了解其功能,然后重复这些步骤。

相关内容