-3

ホストファイルを変更したので、ホスト名を変更する方法.私のシステムはubuntuです。たとえば、私のホストファイル:

192.168.0.100 host1.mydomain.com
192.168.0.101 host2.mydomain.com

/etc/hostname の下にある host1 のホスト名ファイルを host1.mydomain.com に、host2 のホスト名ファイルを host2.mydomain.com にコピーしたい

ファブリックを使用してそれを行う方法は?すべてのホストに SSH 接続し、ホスト名ファイルを編集する必要がありますが、ファブリックでこれを行うことはできますか?

コマンドを使用するつもりはありませんでしhostnameたが、/etc/hostname ファイルを編集するつもりでした。つまり、ファブリックを使用してそれを行う方法を意味します:

def update_hostname():
  get("/etc/hosts","hosts")
  hosts_content = file("hosts")
  **hostname = ·get the hostname corespond to ip·**
  get("/etc/hostname","hostname")
  update `hostname file`
  put("hostname","/etc/hostname")

どのようにipを取得しますか? ファブリックはすべてのホストでジョブを実行し、ホスト名は各ホストに対応しているためです。ジョブが動作しているホストを知り、IP を取得し、IP に対応するホスト名を取得し、最後にホスト名ファイルを更新する必要があります。 ここに画像の説明を入力

4

3 に答える 3

1

Fabric は単なる SSH ラッパーであるため、見ているのは LINUX 固有のものであり、frabric または python 固有のものではありません。

from fabric.api import run
run('hostname your-new-name')
run('echo your-new-hostname > /etc/hostname')

そして、Linuxディストリビューションに従って実行(..編集..)を行うだけですか?

または、次のようにします。

from subprocess import Popen, PIPE
hosts = open('/etc/networking/hosts', 'rb')
for hostline in hosts.readlines():
    ip, name = hostline.split(' ')
    command = ['ssh', '-t', 'root@' + host.strip('\r\n ,;), ' ', "echo " + name.strip('\r\n ,;) + " > /etc/hostname",]
    stdout, stderr = Popen(command, stdout=PIPE, stderr=PIPE).communicate()
hosts.close()

注: /etc/networking/hosts は別の場所に配置される場合があります。ここで重要なのは、/hosts ファイルをループして各マシンに ssh し、指定されたホスト名をそのマシンにエコーすることです。

于 2013-02-05T16:17:54.297 に答える
1
def hostname():

   '''
   function to change the hostname of the ubuntu server
   '''

   server_hostname = prompt ("The Hostname for the server is :")

   sed ("/etc/hostname", before='current hostname', after='%s' % (server_hostname), use_sudo=True,backup='')

   sudo ("init 6")

これにより、選択に応じてホスト名が変更されます。

于 2014-04-28T09:29:14.757 に答える
0

あなたのファブリックスクリプトでは、あなたがする必要があります...

  • hostsファイルの編集を許可されたユーザーとしてマシンにsshします(パーミッションまたはグループを介して)。ユーザーにログインする必要がsudoある場合は、StackOverflow で sudo と Fabric に関する問題を検索してください。fabfile を調整して、パスワードの入力を求めないようにする必要があります。

  • fabric には、ファイルの読み取り/書き込み/オープンを処理する厄介な方法がある場合があります。cd正しいディレクトリに移動するのが最善かもしれません。何かのようなもの...

    cd('/etc/') で run('echo new_hostname hostname')

于 2013-02-05T17:05:03.570 に答える