![변수를 사용하여 호스트 이름을 변경하려면 for 루프를 사용하세요.](https://linux55.com/image/225241/%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%98%B8%EC%8A%A4%ED%8A%B8%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EB%B3%80%EA%B2%BD%ED%95%98%EB%A0%A4%EB%A9%B4%20for%20%EB%A3%A8%ED%94%84%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%84%B8%EC%9A%94..png)
변화하려고 노력 중"호스트 이름--즉시"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