
변화하려고 노력 중"호스트 이름--즉시"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