2014-12-23 1 views
1

저는 HTML을 처음 사용하기 때문에 아래 스크립트를 호출하여 웹 브라우저에서 간단한 Linux 날짜 명령을 인쇄 할 수있었습니다. 그러나 웹 브라우저에서 변수 v의 내용을 표시하려고하는데 할 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 배치 파일은 명령 줄에서 실행할 때 잘 작동합니다. 즉, 오류가 없었습니다.HTTP에서 호출하는 BASH Linux 스크립트 실행

#!/bin/bash 
echo "Content-type: text/html" 
echo "" 
echo "<html>" 
echo "<head>" 
echo "Today is $(date)" 

v=`ssh -t -q jcrm16 ". ~/.profile;/opt/reuters/scripts/matt/adsuserlist"` 
printf "$v" 
# echo $(printf "$v")  << tried this did not work 
echo "</body>" 
echo "</html>" 
+1

이렇게 bash를 사용하는 것은 매우 나쁜 생각입니다. 사람들은 환경 변수 (IFS!)를 전달할 수 있습니다. 모든 종류의 불쾌한 것들 .. 너무 귀찮습니다. bash를 CGI 언어로 사용하는 것은 나쁜 습관입니다. – synthesizerpatel

+0

나는 귀하의 질문이 실제적인 목적보다 학문적이라고 가정합니다. 밖에있는 많은 언어들이 동적 HTML을 생성하는 데 훨씬 더 적합합니다 (@synthesizerpatel이 지적한 것과 동일한 보안 문제에 대해 심사 받았습니다). 그러나 적어도 출력중인 마크 업에 어떤 문제가 있는지 알려주는 포인터를 제공했습니다. –

+0

Jason에게 감사드립니다. perl 및 CGI 형식을 사용할 계획입니다. 지금은이 간단한 디스플레이 만 할 필요가 있습니다. – matthewthegreat

답변

0

당신은 같은 당신의 <head> 블록을 종료하고 <body> 블록을 열 필요가 :

#!/bin/bash 
echo "Content-type: text/html" 
echo "" 
echo "<html>" 
echo "<head></head>" 
echo "<body>" 
echo "Today is $(date)" 

v=`ssh -t -q jcrm16 ". ~/.profile;/opt/reuters/scripts/matt/adsuserlist"` 
printf "$v" 
# echo $(printf "$v")  << tried this did not work 
echo "</body>" 
echo "</html>" 
+0

덕분에 내가 제안한대로 수정할 수 있었고 아직 갈 수 없었습니다. 기본적으로 html 페이지에 나타나는 것은 $ (date)의 내용입니다. – matthewthegreat

+0

오, 잠깐 ... printf는 인쇄 형식 명령입니다. 맞습니까? printf의 형식을 따라야합니다 ... 지금은 형식화 할 텍스트의 유효하지 않은 템플리트를 제공하는 것 외에는 아무것도하지 않습니다. http://wiki.bash-hackers.org/commands/builtin/printf –

+0

Ok 그래서 명령의 출력을 test.txt 파일로 리디렉션했습니다. CAT 명령을 사용하거나 for 루프를 수행하여 파일을 표시 할 수있었습니다. 문제는 웹 페이지에 표시 될 때입니다. 그것은 모두 줄 바꿈없이 연속 텍스트로 나옵니다. – matthewthegreat

1

대신의 변수에 ssh 명령의 출력을 넣고 그 값을 표시 변수, 그냥 ssh의 출력을 직접 표시 할 수 있도록 더 나은 것 :

#!/bin/bash 

cat <<EOF 
Content-type: text/html 

<html> 
<head></head> 
<body> 
Today is $(date) 
EOF 

ssh -t -q jcrm16 ". ~/.profile;/opt/reuters/scripts/matt/adsuserlist" 

echo "</body>" 
echo "</html>" 

하지만 그 장하지 않습니다 사실 ssh을 사용하는 것은 끔찍한 끔찍한 생각이며 그것을해서는 안됩니다.

어쨌든 원본 스크립트가 작동해야합니다. ssh 자체가 웹 서버 프로세스에서 사용될 때 작동하지 않기 때문에 대부분 작동하지 않을 수 있습니다. 어느 쪽이든, ssh이 아닌 테스트를 위해 다른 것을 사용하십시오.

+0

그러나이 예제에서는 html 마크 업이 여전히 손상되었습니다. '' 태그를 닫고 유효한 HTML로 간주하려면'' 태그를 열어야합니다. –

+0

Thanks @ JasonM.Batchelor 지금 HTML을 수정했습니다. – janos

+0

안녕하세요. 제안을위한 Thx. 나는 shh의 출력을 텍스트 파일로 리다이렉트 한 다음 그것을 인쇄하려고 시도했다. cat 등. 나는 다른 awk 명령을 사용했다. 지금 내가 겪고있는 문제는 표시 데이터가 줄 바꿈없이 연속 된 텍스트로 보이므로 다음에 무엇을해야할지 확신하지 못한다는 것입니다. – matthewthegreat