Fabric을 사용하여 모든 서버에서 명령 실행

Fabric을 사용하여 모든 서버에서 명령 실행

여기에서 물어봐야 할지 아니면 다른 스택 교환 커뮤니티에서 물어봐야 할지 잘 모르겠지만, Python 구성을 사용하여 서버 목록에서 몇 가지 간단한 명령을 실행하려고 합니다.

명령 코드:

    from fabric.api import run
    def host_type():
      run('uname -s')

uname -s그러면 다음을 호출하여 모든 Linux 서버에서 명령이 실행됩니다.

  $fab -H < ......Comma, separated , Servers , List , Here.....> host_type

이제 문제는 실행 중에 사용자/루트 비밀번호를 묻지 않고 결과를 반환하도록 어떻게 실행/구성하는지입니다. 몇 가지 Linux 명령줄 트릭이 있을 수 있지만 기억이 나지 않습니다.

편집 1:

음, fab 명령에는 -p 옵션이 있지만 각 서버마다 비밀번호가 다르기 때문에 해당 옵션이 작동하지 않을 수 있습니다.

답변1

이를 수행하는 방법에는 두 가지가 있습니다. 백엔드에서 Fabric사용되므로 openssh비밀번호 없는 연결을 구성한 경우 아무것도 설정할 필요가 없으며 작동합니다.

또 다른 방법도 매우 간단합니다. env변수 만 설정하면 됩니다 .

from fabric.state import env

env.user = "user"
env.password = "password"

env.colorize_errors = True
env.connection_attempts = 3
env.disable_known_hosts = True
env.skip_bad_hosts = True
env.parallel = False
env.linewise = True

이것은 트릭을 수행해야합니다. 저는 보통 별도의 파일에 넣어서 import 합니다.

추신: 저는 개인적으로 더 간단한 작업에 paramiko어떤 라이브러리를 Fabric사용하는 것이 더 쉽다고 생각합니다.

관련 정보