LINUX.ORG.RU
ФорумAdmin

Помогите скопировать файло по сети без scp.


0

0

есть проблемма. удалили /usr.

на удаленной машине не осталось ни scp, ни ssh, ни других полезных штук. но на ней остался залогиненый пользователь.

есть другая машина с идентичным /usr. как при помощи средств, оставшихся в /bin /sbin, скопировать туда файло?

anonymous

на дискетках :) Если там никаких серверных прог нету - куда ты коннектиться станешь?

Skeletal ★★★
()

а на рабочей машине - сервак поднимешь и с него сольешь

Skeletal ★★★
()

Паршивая ситуация, но в общем-то решаем. Что за система? Консоль - это bash? И вообще ls /bin покажи, может у тебя там в принципе нечем сетевое соединение открывать.

IMAP работает? Что ещё из сетевых сервисов пока что живо? Не вздумай ничего перезапускать кстати.

Teak ★★★★★
()
Ответ на: комментарий от Teak

Чтобы залить небольшой бинарник туда, юзай команду "dd of=q bs=SIZE count=1", где SIZE надо заменить на размер бинарника, а сам его потом вставить на стандартный ввод (в конце может понадобиться нажать enter для завершения строки, это нормально, всё равно больше чем SIZE dd не съест). Чревато испоганенной консолью, но это мелочи. Ещё более чревато символами конца файла, так что лучше сначала опробовать на кошках.

dd и chmod должны быть в /bin. Залей через это дело командочку fetch а дальше разберёшься.

Teak ★★★★★
()
Ответ на: комментарий от Teak

система redhat 6.2, bash, вот /bin arch ash ash.static awk basename bash bash2 bsh cat chgrp chmod chown cp cpio csh date dd df dmesg dnsdomainname doexec domainname dumpkeys echo ed egrep ex false fgrep gawk gawk-3.0.4 gen_kmap grep gtar gunzip gzip hostname igawk ipcalc kbd_mode kill ln loadkeys login ls mail mkdir mknod mktemp more mount mv netstat nice nisdomainname ping ps pwd red rm rmdir rpm rvi rview sed setfont setserial sh shlock sleep sort stty su sync tar tcsh touch true umount uname unicode_start unicode_stop usleep vi view vimtutor ypdomainname zcat

anonymous
()

Можно по NFS (в /sbin все что надо) примонтировать /usr, если топология (файерволы) позволяют

sdio ★★★★★
()
Ответ на: комментарий от anonymous

gawk почти гарантированно умеет соединяться по сети, хотя он у тебя наверное такой же древний, как сама система, но тем не менее. Сейчас сваяю тебе http-клиент на gawk, или в гугле найду, не вопрос. Даже интересно.

А с dd - я очень серьёзно рекомендую сначала потренироваться в другой консольке на работающем сервере и не из под рута. Кстати если консоль испортишь, её можно чинить командой reset.

Teak ★★★★★
()

всем спасибо, но закончилось все быстро: какой-то деятель бутнул машину. т.ч. теперь уж точно ничего проверить невозможно.

anonymous
()
Ответ на: комментарий от Teak

sergey@athlon:/tmp$ cat geturl.awk 
BEGIN {
  HttpService = "/inet/tcp/0/redin.info/80"
  ORS = RS = "\r\n\r\n"
  print "GET /test HTTP/1.0" |& HttpService
  HttpService                      |& getline Header
  print Header > "/dev/stderr"
  while ((HttpService |& getline) > 0)
    printf "%s", $0 > "test"
  close(HttpService)
}
sergey@athlon:/tmp$ cat >gettest.awk
BEGIN {
  HttpService = "/inet/tcp/0/redin.info/80"
  ORS = RS = "\r\n\r\n"
  print "GET /test HTTP/1.0" |& HttpService
  HttpService                      |& getline Header
  print Header > "/dev/stderr"
  while ((HttpService |& getline) > 0)
    printf "%s", $0 > "test"
  close(HttpService)
}
sergey@athlon:/tmp$ gawk -f gettest.awk 
HTTP/1.1 200 OK
Date: Tue, 06 Feb 2007 13:08:23 GMT
Server: Apache/1.3.37 (Unix) FrontPage/5.0.2.2635 PHP/4.4.4 mod_ssl/2.8.28 OpenSSL/0.9.7e-p1
Last-Modified: Tue, 06 Feb 2007 12:52:48 GMT
ETag: "5c0cd-15-45c87a20"
Accept-Ranges: bytes
Content-Length: 21
Connection: close
Content-Type: text/plain

sergey@athlon:/tmp$ chmod +x test
sergey@athlon:/tmp$ ./test 
Hi!
sergey@athlon:/tmp$ 

Это была закачка файла на сервер через gawk и выполнение его в прямом эфире.
Перед употреблением рекомендуется заменить "test" и "redin.info" по вкусу.

Teak ★★★★★
()
Ответ на: комментарий от anonymous

На самом деле, решение не очень готовое, там по-хорошему ещё надо Host: говорить, иначе на шаред-хостинге апач просто не поймёт, какой ты сайт имел в виду. Ну и файлик читается по строкам, что тоже не есть хорошо (хотя может это и не проблема, не знаю, хреновый из меня специалист по awk). А вообще это слегка переделанный doc/examples/network/geturl.awk из gawk.

Teak ★★★★★
()
Ответ на: комментарий от Teak

>gawk почти гарантированно умеет соединяться по сети

shell:

get ()
{
    h=${1#http://};
    h=${h%%/*};
    p=${h#*:};
    h=${h%%:$p};
    if [ "$p" = "$h" ]; then
        p='80';
    fi;
    f=${1#http://*/};
    if [ "$f" = "$1" ]; then
        f='/';
    else
        if [ -z "$f" ]; then
            f='/';
        else
            f="/$f";
        fi;
    fi;
    ( echo -e "GET $f HTTP/1.0\r\nHost: $h\r\n\r\n" 1>&3 & cat 0<&3 ) 3<>/dev/tcp/$h/$p | ( read i;
    while [ "$(echo $i | tr -d '\r')" != "" ]; do
        read i;
    done;
    cat )
}

borisych ★★★★★
()
Ответ на: комментарий от borisych

Это не шелл, это bash. Хотя ты прав, bash у него тоже есть, а я почему-то проглядел его.

Но вообще я проверял, у меня /dev/tcp не работает, уж не знаю почему. Debian Sarge, ядро 2.6, всё остальное что может иметь значение - по умолчанию. А вот /inet в gawk исправно открывается.

Teak ★★★★★
()
Ответ на: комментарий от anonymous

> unicode_start

ну хоть с русским проблем не будет:)

а у тебя нет директории типа /rescue ? в нормальных системах там статически слинкованный спасительный набор

dilmah ★★★★★
()
Ответ на: комментарий от Teak

Понятно.

У меня (из-за специфики работы) регрессия к максимально стандартным (переносимым) решениям, т.к. зоопарк платформ, ОСей и их версий такой, что впору музей открывать.

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.