2014-10-23 3 views
0

/etc/passwd에서 무작위 사용자를 선택하고 SHH를 사용하여 원격 호스트를 검사하여 동일한 UID를 가진 사용자가 있는지 확인하고 전체 행을 인쇄하십시오 사용자가있는 경우 passwd. 여기 원격 sed 명령으로 대체 명령

내가 지금까지 쓴 명령입니다
echo `shuf -n 1 /etc/passwd | cut -d ":" -f 3' | ssh 100.64.0.2 sed -n -e '/**xargs**/p' /etc/passwd 

은 로컬 컴퓨터에서 인수로 xargs를을하지 않는 나오지도 명령하지만, 어떤 생각이 매우 극명하게 될 것이다

텍스트처럼 보인다 !

+1

'xargs'는 "input from value"를 의미하는 마술 문자열이 아닌 명령입니다. –

+0

전체/etc/passwd를 가져 와서 로컬 하나와 비교하는 것이 어떻습니까? 정말 느리고 훨씬 안전하지 않다. – NeronLeVelu

답변

0

난 당신이

user=$(shuf -n 1 /etc/passwd | cut -d ":" -f 3) 
ssh 100.64.0.2 sed -n -e "/$user/p" /etc/passwd 

뭔가를 쓰기 위해 노력했다하지만 대신 getent을 사용하여 조사 할 수 있습니다 생각 .

user=$(shuf -n 1 /etc/passwd | cut -d ":" -f 3) 
ssh 100.64.0.2 getent passwd "$user" 

내가 OP xargs에 대한 내 의견에 언급 한대로 명령입니다. 표준 입력에서 값을 읽고 명령 행에 고정시키는 것은 마술이 아닙니다. (즉, 표준 입력이 가능하게 존재하기 전에, 심지어 명령 줄 이후 개념으로, 정의, 구성되어과 주문에 문제가 있음을 유의하십시오.)

+0

ssh 100.64.0.2 $ (shuf -n 1 <(getent passwd) | cut -d ":"-f 3) –

+0

@ A.Danischewski 의견이 있었나요? –

+0

당신이 쓴 것은 하나를 위해 불필요하며 또한 스스로를 실행 취소합니다. 당신의 논리를 확인하고, 당신을 위해 그것을 고쳤습니다. =) –

0
for f in `cat hostlist.txt`; do echo "### $f ###"; ssh $f find/-name "tmp" | sed "s/^/'$f | '/" ; done 2>/dev/null 

난의 각 라인에 대한 호스트 이름을 인쇄하는 어려운 시간을 보냈습니다 찾기 명령, 이것은 해결하는 데 도움이됩니다.