변수를 사용하여 호스트 이름을 변경하려면 for 루프를 사용하세요.

변수를 사용하여 호스트 이름을 변경하려면 for 루프를 사용하세요.

변화하려고 노력 중"호스트 이름--즉시"for 루프에 변수를 사용하는 일부 컴퓨터의 경우 수집하고 싶습니다."호스트 이름-f"서버 자체에서 변수를 사용하여 자동으로 변경합니다. 실행하면 알려줍니다."매개변수 개수가 잘못되었습니다."

주문하다:

for i in `cat /tmp/serverlist`; do
    echo "Hostname in $i"
    ssh -o StrictHostKeyChecking=no root@$i "hostname=$(hostname -f); hostnamectl --transient set-hostname $hostname"
done

답변1

큰따옴표를 사용하고 있기 때문에 $hostname시작 전에 변수가 로컬 컴퓨터에서 확장되므로 ssh비어 있을 수 있습니다. 다음과 같은 경우 동일한 오류가 발생할 수 있습니다.

$ hostnamectl --transient set-hostname 
Too few arguments.

원격 호스트에서 확장되기를 원하므로 작은따옴표를 사용하십시오(다른 나쁜 사례도 수정함).

while IFS= read -r i; do
   ssh -o StrictHostKeyChecking=no "root@$i" 'hostnamectl --transient set-hostname "$(hostname -f)"'
done

관련 정보