리눅스 명령어로 IP를 생성하면 SSH를 통해 서버에 로그인한 후 해당 명령어를 실행할 수 없습니다.

리눅스 명령어로 IP를 생성하면 SSH를 통해 서버에 로그인한 후 해당 명령어를 실행할 수 없습니다.

직접 ssh를 사용하면 서버가 제대로 실행되고 로그아웃하기 전에 원하는 만큼의 명령을 실행할 수 있습니다.ssh [email protected]

서버 IP 주소는 내 네트워크 설정에 정의된 것과 매우 유사하지만 마지막 옥텟이 바뀌었습니다. 다음 명령은 ifconfig올바른 IP 주소를 읽고 생성합니다.

ifconfig Netcon | grep "inet " | printf `awk '{ print $2 }'` | tail -c 1 | ssh -tt [email protected].`tr 12 21`

SSH는 서버 비밀번호와 로그인을 묻는 메시지를 표시하고 프롬프트에 새 호스트 이름을 표시합니다. 그러나 내가 입력한 것은 아무것도 실행되지 않습니다.

Last login: Fri Feb 28 09:07:38 2020 from 192.168.13.2
[email protected]:~$ ping google.com


cd
asdasdwjawdi

-ttSSH 호출에서 이를 제거하면 다음과 같이 로그인이 실패합니다.

tput: No value for $TERM and no -T specified

답변1

당신은 혼란스러워요표준 입력ssh최종 옥텟을 생성하는 데 필요한 명령 및 처리입니다. 기본적으로 귀하의 명령은 다음과 같습니다.

echo 1.2.3.4 | ssh -tt user@`tr 12 21`

tr이를 통해 명령(파이프)의 입력이 수신되고 있으므로 echo터미널에 연결되지 않았음을 알 수 있기를 바랍니다 . 또한 ssh파이프에서 입력을 읽으려고 시도합니다.

내 생각에 당신이 원하는 것은 이것이다.

ip=$(ifconfig eth0 | awk '/inet / { split($2, ip, /\./); printf "%d.%d.%d.2\n", ip[1], ip[2], ip[3] }')
ssh "user@$ip"

또는 임시 변수가 없는 줄에서

ssh "user@$(ifconfig eth0 | awk '/inet / { split($2, ip, /\./); printf "%d.%d.%d.2\n", ip[1], ip[2], ip[3] }')"

관련 정보