ïýòðрь - Xakep Online
ïýòðрь - Xakep Online
ïýòðрь - Xakep Online
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
UNIXOID ///// ISSUE<br />
ÈÑÏÎËÜÇÓß ÎÄÈÍ ÑÊÐÈÏÒ, ÌÎÆÍÎ ÎÐÃÀÍÈÇÎÂÀÒÜ<br />
ÑÎÅÄÈÍÅÍÈÅ ÑÐÀÇÓ Ñ ÍÅÑÊÎËÜÊÈÌÈ FTP-ÑÅÐÂÅÐÀÌÈ.<br />
Óñòàíîâè ïîëíûå ïðàâà íà ýòîò ôàéë:<br />
$ chmod 777 ~/ppp-auto<br />
Âñå. Òåïåðü òåáå íóæíî åãî çàïîëíèòü, ñêîïèðîâàòü â êàòàëîã /tmp è<br />
íàçíà÷èòü âðåìÿ ñîåäèíåíèÿ ñ ïîìîùüþ at:<br />
if [ $# != 0 ]; then<br />
VER=$1<br />
else<br />
exit<br />
fi<br />
$ cp ~/ppp-auto /tmp/ppp-auto<br />
$ at 02:10<br />
at> /usr/sbin/ppp-on<br />
Çàìåíè /usr/sbin/ppp-on íà êîìàíäó, ñ ïîìîùüþ êîòîðîé òû óñòàíàâëèâàåøü<br />
ñîåäèíåíèå. Îáðàòè âíèìàíèå, ÷òî òàêèå êîìàíäû îáû÷íî<br />
òðåáóþò ïðèâèëåãèé root, ïîýòîìó ìîæíî: a) íàñòðîèòü sudo (ñì. íèæå)<br />
èëè á) çàïóñòèòü at îò root'à.<br />
Êîíå÷íî, ðåøåíèå íåñêîëüêî òîïîðíîå, íî çàòî î÷åíü ïðîñòîå.<br />
 äàííîì ñëó÷àå õîðîøèì äîïîëíåíèåì ìîæåò ñòàòü çàïèñü ðåçóëüòàòîâ<br />
âûïîëíåíèÿ êîìàíä â ôàéë è îòïðàâêà åãî ïî ïî÷òå ñ ïîìîùüþ<br />
êîìàíäû /usr/bin/mail (èëè mailx).<br />
ÍÅ ÏÐÈÂÛÊÀÉ Ê ÁÐÀÓÇÅÐÓ<br />
Ñ ñîåäèíåíèåì ðàçîáðàëèñü, òåïåðü ïîãîâîðèì îá àâòîìàòè÷åñêîì<br />
ñêà÷èâàíèè ôàéëîâ. Äëÿ íà÷àëà ïîïðîáóåì çàñòàâèòü ftp-êëèåíò ðàáîòàòü<br />
â àâòîíîìíîì ðåæèìå. Äëÿ îñóùåñòâëåíèÿ çàäóìàííîãî íàì<br />
ïîíàäîáèòñÿ ïðîäâèíóòûé lftp (åñòü â ëþáîì äèñòðèáóòèâå). Âûïîëíåíèå<br />
êîìàíä â ïàêåòíîì ðåæèìå ÿâëÿåòñÿ îäíîé èç åãî îñîáåííîñòåé.<br />
×òîáû âîñïîëüçîâàòüñÿ åþ, ñîçäàé ôàéë ~/lftp.auto ïðèìåðíî ñ<br />
òàêèì ñîäåðæèìûì:<br />
$ vi ~/lftp.auto<br />
# çàäàåì èìÿ è ïàðîëü ïîëüçîâàòåëÿ (ïóñòîé ïàðîëü — "")<br />
user name passwd<br />
# ïîäêëþ÷àåìñÿ ê ñåðâåðó<br />
lftp ftp.kernel.org<br />
# äàëåå èäóò ëþáûå ñòàíäàðòíûå êîìàíäû ftp-ïðîòîêîëà (get, put, ls)<br />
get ...<br />
# îòêëþ÷àåìñÿ<br />
exit<br />
Çàäàé ïðàâèëüíûå ïðàâà äîñòóïà íà ýòîò ôàéë (÷òîáû íèêòî íå<br />
ïîäñìîòðåë ïàðîëü):<br />
$ chmod 600 ~/lftp.auto<br />
È çàïóñòè lftp òàêîé êîìàíäîé:<br />
$ lftp -f ~/lftp.auto > ~/lftp.log<br />
Ftp-êëèåíò âûïîëíèò âñå òâîè êîìàíäû è îòêëþ÷èòñÿ îò ñåðâåðà. Îòâåòû<br />
ñåðâåðà íà ïðèâåäåííûå êîìàíäû çàïèøóòñÿ â ôàéë ~/lftp.log<br />
(ïî óìîë÷àíèþ îíè âûâîäÿòñÿ íà ýêðàí). Ýòîò ôàéë ìîæåò ñòàòü<br />
î÷åíü ïîëåçíûì, åñëè â ñêðèïòå ïðèìåíÿåòñÿ êîìàíäà ðåêóðñèâíîãî<br />
îáõîäà êàòàëîãîâ (ls -R). Èñïîëüçóÿ îäèí ñêðèïò, ìîæíî îðãàíèçîâàòü<br />
ñîåäèíåíèå ñðàçó ñ íåñêîëüêèìè ftp-ñåðâåðàìè.<br />
Ñîåäèíåíèÿ ñ ftp ìîæíî ñäåëàòü åùå áîëåå àâòîíîìíûìè, åñëè èñïîëüçîâàòü<br />
ðàñøèðåíèå zsh ïîä íàçâàíèåì zftp. Ýòî âñòðîåííûé â<br />
øåëë ftp-êëèåíò, ïîçâîëÿþùèé èíòåãðèðîâàòü êîìàíäû ftp-ïðîòîêîëà<br />
ïðÿìî â ñêðèïòû. Äëÿ äåìîíñòðàöèè ìîùè òàêîé òåõíîëîãèè ðàññìîòðèì<br />
ñëåäóþùèé ñêðèïò:<br />
zmodload zsh/zftp<br />
echo -n "Connecting to $FTP... "<br />
zftp open $FTP<br />
zftp login anonymous "" >/dev/null 2>&1<br />
zftp binary<br />
zftp cd pub/linux/kernel/v`echo $VER | cut -d "." -f 1-2`/<br />
echo "Checking for new kernel..."<br />
zftp ls | grep linux-${VER}<br />
if [[ $? == 0 ]]; then<br />
echo -n "Downloading... "<br />
zftp get linux-${VER}.tar.bz2 > linux-${VER}.tar.bz2<br />
zftp close<br />
else<br />
echo "Kernel $VER doesn't exist."<br />
zftp close<br />
fi<br />
Ñêðèïò ïðåäíàçíà÷åí äëÿ çàêà÷êè ÿäðà Linux ñ îôèöèàëüíîãî ftp-ñåðâåðà.<br />
Çàïóñêàòü ñëåäóåò ñ îäíèì ïàðàìåòðîì — âåðñèåé ÿäðà. Êàê<br />
ìîæíî çàìåòèòü, zftp îïåðèðóåò ñòàíäàðòíûìè êîìàíäàìè ëþáîãî ftpêëèåíòà<br />
ñ òîé ëèøü ðàçíèöåé, ÷òî ïîñëå èñïîëíåíèÿ êàæäîé êîìàíäû<br />
óïðàâëåíèå âîçâðàùàåòñÿ îáðàòíî ê øåëëó. Áëàãîäàðÿ ýòîé îñîáåííîñòè<br />
ìîæíî ïîëíîñòüþ êîíòðîëèðîâàòü âåñü äèàëîã êëèåíòà ñ ñåðâåðîì,<br />
äëÿ ÷åãî ðàíüøå ïðèõîäèëîñü èñïîëüçîâàòü expect.<br />
Åñëè åñòü íåîáõîäèìîñòü ñëèòü ôàéëû ñ http-ñåðâåðà, ìîæíî âîñïîëüçîâàòüñÿ<br />
íåèíòåðàêòèâíûì http-êëèåíòîì wget. ß ïðèìåíÿþ åãî<br />
â àâòîíîìíûõ èíòåðíåò-ñîåäèíåíèÿõ, êàê áûëî ïîêàçàíî â ïðåäûäóùåì<br />
ðàçäåëå.<br />
$ wget URL<br />
Ôàéë áóäåò ñêà÷àí â<br />
òåêóùèé êàòàëîã. Òû<br />
ìîæåøü ñòîëêíóòüñÿ ñ<br />
ñèòóàöèåé, êîãäà ôàéë<br />
èìååò ñëèøêîì áîëüøîé<br />
ðàçìåð è íå ìîæåò<br />
áûòü ñëèò â ðàìêàõ îäíîãî<br />
ñîåäèíåíèÿ. Êàê<br />
áûòü? Åñëè çíà÷èòåëüíàÿ<br />
÷àñòü ôàéëà óæå<br />
ñêîïèðîâàíà, à âðåìÿ<br />
ïîäæèìàåò, òî ìîæíî<br />
ïðèáèòü wget ëèáî êîìàíäîé<br />
«killall wget»,<br />
ëèáî êîìáèíàöèåé<br />
«CTRL+C». Âî âðåìÿ<br />
ñëåäóþùåãî ñåàíñà ñîåäèíåíèÿ<br />
íàäî âîçîáíîâèòü<br />
ïðîöåññ ñêà÷èâàíèÿ<br />
êîìàíäîé:<br />
$ vi ~/get_kernel.zsh<br />
$ wget -c URL<br />
#!/bin/zsh<br />
FTP=ftp.kernel.org<br />
À åùå wget ìîæíî<br />
ïðåâðàòèòü â íàñòîÿíàø<br />
ñêðèïò ðàáîòàåò!<br />
102 XÀÊÅÐ 01 /85/ 06