Использование UNIX: Часть 3. Как превратить командную строку в универсальный инструмент

Для работы в Интернет достаточно использовать командную строку!

Описаны три основные утилиты UNIX®, которые позволят работать в Интернет прямо из командной строки.

Мартин Стейчер, главный редактор, Linux Magazine

Мартин Стейчер (Martin Streicher) работает главным редактором журнала Linux Magazine. Он получил степень магистра Вычислительной Техники в университете Purdue, и разрабатывал UNIX-подобные системы с 1982 на языках программирования Pascal, C, Perl, Java, а недавно добавил в этот список Ruby. Ему можно написать по адресу martin.streicher@linux-mag.com.



05.01.2008

Командная строка UNIX® предоставляет интерфейс типа WYTIWYG - What you type is what you get (Что напечатаешь, то и получишь). Операционная система UNIX предлагает сотни, если не тысячи команд, при помощи которых можно взаимодействовать с множеством ресурсов, доступных для ядра или пользователя. Если необходимо отследить использование CPU, то нужно использовать top или ps. Нужно удалить все файлы с расширением .bak? Это можно сделать командой команду rm *.bak. А утилита man выдает описание команд.

Но что делать, если требуемый ресурс находится на удаленном компьютере в территориально-распределенной сети WAN или в Интернет? Вспомним цитату из отличной книги Дугласа Адамса Автостопом по галактике: "Не паникуйте!" Командная строка UNIX способна скачивать файлы с удаленных компьютеров и загружать их обратно, подключаться к серверам в различных сетях и выполнять запросы к ним.

Переходим от локального взаимодействия к сетевому

В первой и второй этой серии рассказывалось, как много задач можно решить, пользуясь командной строкой UNIX. Объединив несколько команд с помощью (|) и возможностей перенаправления можно создать процесс для обработки данных, более мощный, чем сумма входящих в его состав компонентов.

Хотя часть ресурсов, с которыми пользователь работает каждый день, хранится на его компьютере локально, значительное и постоянно растущее количество ресурсов (файлов, сообщений электронной почты, программ) находится на расстоянии от него, на других компьютерах в сети WAN или Интернет. Web-браузер предоставляет практически полный доступ к таким ресурсам, однако с одним ограничением: обычные приемы работы point-and-click быстро надоедают и даже приводят к ошибкам, особенно если нужно не просто скачать несколько файлов с ресурса. Более того, если вам нужно выполнить какой-нибудь периодически выполняющийся определенный порядок действий (script), исключив вероятность возникновения ошибок, например, то тут обычный Web-браузер вам вряд ли поможет.

Кроме набора утилит для локальных ресурсов, таких как ls, cp, mail, uptime, du manage и query local resources в UNIX также есть набор команд для доступа к удаленным ресурсам. Эта статья описывает инструменты wget, curl и ssh (secure shell) и способы их применения, которые помогают безопасно подключаться к удаленным системам. Инструменты wget и curl применяются для передачи файлов, а ssh поможет безопасно подключаться к удаленным системам и быстро и без проблем обмениваться файлами.

Проблема с Telnet и аналогичными продуктами.

Если на системе запущена программа rsh (или её версии - rcp, rexec, rlogin или Irdist) или telnet, то ее нужно немедленно отключить и удалить их вместе с соответствующими демонами. Также, если нельзя разрешать анонимный доступ по FTP (File Transfer Protocol), то нужно отключить и FTP-сервер.

Использование уязвимостей в rsh и ftp

Чтобы получить больше информации об использовании уязвимостей в rsh и FTP ознакомьтесь со статьями: "Security Vulnerability between FTP and Berkeley Rsh/Rlogin Protocols" (Проблемы с безопасностью в протоколах FTP и Berkley RSH/Rlogin) и "Stupid, Stupid Protocols: Telnet, FTP, rsh/rcp/rlogin." (Бестолковые протоколы: Telnet, FTP, rsh/rcp/rlogin).

Хотя программы rsh и telnet уже давно используются в UNIX злоумышленники могут воздействовать на любую из этих программ, чтобы легко взломать компьютер. Пользователь или системный администратор должны остановить и удалить подобное программное обеспечение, где бы оно ни было обнаружено, и заменить его программой ssh.

Для контролируемого FTP доступа используйте утилиту sftp. Следует заменить утилиту rdist на более совершенную версию rsync. Если же необходимо предоставлять анонимный доступ к FTP (или скачивание файлов по HTTP), то обязательно нужно проверить, что программные и аппаратные брандмауэры изолируют все открытые для внешнего доступа компьютеры сети от внутренних серверов с важными данными.

Но для начала давайте разберемся с проблемами, связанными с паролями.

Повышение безопасности при использовании пароля.

Доступ к большинству компьютеров и служб обычно является ограниченным и защищается различными способами. В некоторых случаях для аутентификации в системе (и, следовательно, для получения права работать в ней) может потребоваться участие в сложном протоколе обмена контрольной информацией или сертификат SSL (Secure Sockets Layer) или даже биометрическое сканирование. Обычно, правда, для получения доступа достаточно пароля. Подобно PIN'у (секретному коду) банковской карточки, пароль тоже является секретом пользователя и удачно выбранный пароль обычно трудно подобрать методом перебора. Для безопасной аутентификации обычно достаточно имени пользователя и надежного пароля.

Конечно, надежный пароль трудно запомнить и с каждым новым паролем, состоящим из чисел, знаков препинания и букв в разных регистрах, этот процесс только усложняется. Пользователю быстро надоедает повторный ввод пароля вручную.

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

ftp ftp://joe:passwd@www.example.com

Тем не менее, используя такую команду можно раскрыть свою секретную информацию другим пользователям, которые работают на том же компьютере. Например, выполнив команду ps -Aeww, можно вывести следующую информацию о каждом работающем процессе: команда, использованная для его запуска, и параметры его окружения.

Чтобы обеспечить удобство работы с этой командой без риска для безопасности пользователя, многие программы могут считывать подобные параметры из специального файла .netrc (произносится нет-р-си), который обычно находится по адресу ~/.netrc. Файл .netrc должен быть доступен для чтения и записи только владельцу (режим 0600 или -rw-------), и каждая строка в этом файле должна соответствовать синтаксису:

machine ftp.example.com login zaphod password I()Trillian!

machine www.magazine.com login abner password MmG8y*tr

default login anonymous password zaphod@heartofgold.com

В первых двух строчках присутствуют ключевое слово machine и имя домена компьютера, ключевое слово login и имя пользователя для регистрации на компьютере, ключевое слово password, за которым идет пароль данного пользователя. Credentials из последней строчки представляют параметры по умолчанию для любой заранее незаданной системы. Эта default строчка должна быть последней в файле .netrc. Полное описание параметров настройки файла .netrc можно получить, введя команду man 5 netrc.

Очевидно, если любой файл содержит конфиденциальные данные, то его лучше защитить, разрешив его просматривать и редактировать только пользователю (режим 600) или ограничиться только запретом записи в этот файл (read-only режим 400), чтобы избежать случайного удаления или перезаписи. Также можно защитить свой домашний каталог при помощи режима 700.

Теперь при запуске любого приложения с поддержкой .netrc, включая приложения, которые будут обсуждаться дальше, соответствующие имя пользователя и пароль будут передаваться автоматически в соответствующую службу, без всякого ввода с клавиатуры. При необходимости вы можете отключить опцию auto-login с помощью параметра -n.

Скачивание файлов с сервера

Наряду с протоколами HTTP и HTTP over SSL (HTTPS) для Web-страниц, протокол FTP - это один из наиболее часто используемых Интернет-протоколов. С помощью протокола FTP клиент может подключиться к серверу, получить список каталогов и файлов и либо скачать файл (запросив файл с сервера), либо загрузить файл (отправив его на сервер для хранения). URL-адреса следующего вида ftp://ftp.example.com/path/to/anotherfile.zip и ftp://user:password@ftp.example.com/path/to/file.zip подразумевают подключение к серверу ftp.example.com с помощью FTP и скачивание файла /path/to/anotherfile.zip. Второй URL-адрес просто добавляет параметры для входа на FTP сервер.

На большинстве компьютеров подобный URL-адрес запустит Web-браузер или стандартный FTP-клиент, чтобы с его помощью скачать указанный файл. Тем не менее подобные URL-адреса можно использовать с помощью утилиты командной строки wget - мощной программы для скачивания файлов по протоколам HTTP, HTTPS и FTP. Эта программа поддерживает .netrc файлы и работает без всякого участия пользователя, что делает её идеальной для автоматизации процессов. Если в системе отсутствует программа wget, то её исходный код можно скачать с GNU Software Foundation. Она легко компилируется на любой операционной системе семейства UNIX с помощью нескольких простых команд, и эту утилиту можно поместить в персональный или общий каталог bin.

Рассмотрим несколько примеров использования wget когда у пользователя имеется правильно настроенный файл .netrc. В этих примерах присутствуют номера строк, но это сделано исключительно для наглядности и их не нужно вводить. В листинге 1 показывается, как скачать файл при помощи wget, не покидая привычной для нас командной строки.

Листинг 1. Использование wget для скачивания файлов из командной строки
1 $ wget http://ftp.gnu.org/pub/gnu/wget/wget-1.10.2.tar.gz
--16:02:29--  http://ftp.gnu.org/pub/gnu/wget/wget-1.10.2.tar.gz
           => `wget-1.10.2.tar.gz'
Resolving ftp.gnu.org... 199.232.41.7
Connecting to ftp.gnu.org[199.232.41.7]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1,213,056 [application/x-tar]

100%[=====================>] 1,213,056    531.22K/s             

16:02:37 (529.57 KB/s) - `wget-1.10.2.tar.gz' saved [1213056/1213056]

2 $ wget -q ftp://mirror.linux.duke.edu/pub/centos/4.3/os\
  /i386/RELEASE-NOTES-en.html

3 $ cat url_list.txt
http://www.wikipedia.com
http://valdez.barebones.com/pub/freeware/TextWrangler_2.1.3.dmg

4 $ wget -i -nv url_list.txt
16:06:00 URL:http://www.wikipedia.org/ [33606] -> "index.html" [1]
16:06:41 URL:http://valdez.barebones.com/pub/freeware/
  TextWrangler_2.1.3.dmg [9488296/9488296] -> 
  "TextWrangler_2.1.3.dmg" [1]
FINISHED --16:06:41--
Downloaded: 9,521,902 bytes in 2 files

5 $ ls
RELEASE-NOTES-en.html   index.html              wget-1.10.2.tar.gz
TextWrangler_2.1.3.dmg  url_list.txt

Команда в строке 1 скачивает по протоколу HTTP наиболее свежую версию исходного кода wget с домашней страницы этого проекта. По умолчанию wget информирует о текущем состоянии процесса. Можно отключить эти сообщения при помощи параметра -q (quiet mode). Команда в строке 2 скачивает документ release notes для ОС CentOS по протоколу FTP без вывода дополнительной информации.

Защита URL адресов от изменений

Следует отметить, что многие URL-адреса для протокола HTTP содержат символы, которые могут оказаться служебными для вашей оболочки. Например, URL-адрес может содержать знак вопроса (?), которым отделяется имя сервера и путь к конкретному ресурсу от списка параметров. Тем не менее, для оболочки UNIX знак вопроса будет считаться специальным символом.

Чтобы избежать изменения URL-адреса вашей оболочкой, просто поместите URL-адрес в одиночные кавычки. Для того чтобы wget не называл скачанные файлы длинными и странными именами, используя информацию из URL-адреса, используйте параметр для точного указания имени файла, как в этом примере:

$ wget -o sharkey \'http://www.example.com/\ download.cgi?proj=science&file=sharkey'

Если имеется большой список URL-адресов для скачивания файлов, то не нужно вводить каждый из них с командной строки. Вместо этого можно подготовить (точнее сказать сгенерировать) список URL-адресов для скачивания. Команда в строке 3 печатает простой текстовый файл url_list.txt, содержащий две записи; команда в строке 4 скачивает файлы с этих URL-адресов. Используйте параметр -i, когда нужно, чтобы wget работал со списком URL-адресов. Параметр -nv является сокращением от not verbose (немногословный) и заставляет wget выводить более лаконичные сообщения

Если не будет задано имя для скачиваемого файла (для этого используется параметр –о), то wget будет создавать новый файл с таким же именем как у удаленного файла, опуская полный путь к ресурсу, где находится искомый файл. В строке 5 перечислены четыре файла, скачанные при помощи команд из строк 1, 2, 3.

Утилита wget обладает большим набором параметров и различными возможностями. Она может исследовать (spider) FTP- или Web-сайты и скачивать целиком каталоги с находящимися в них файлами. Также можно задать ограничение для автоматического скачивания, предоставить файл cookie при необходимости и возобновить прерванное скачивание с того места, где оно оборвалось. Ознакомьтесь со страницей man для wget, чтобы больше узнать о возможностях этой утилиты.

Загрузка файлов на сервер

Утилита wget незаменима для автоматизации процесса скачивания файлов, но она не может загружать файлы на сервер. Также она неспособна взаимодействовать с secure FTP, telnet и другими старыми и утратившими популярность Интернет-протоколами. Для решения подобных задач следует познакомиться с настоящим универсальным инструментом для работы в сети: утилитой curl.

Утилита для командной строки curl позволяет получать и отправлять данные, что делает её крайне удобной для передачи локальных файлов на удаленные компьютеры. Более того, она основана на библиотеке libcurl с мощным API, который позволяет использовать всю функциональность curl прямо из приложения пользователя. Эта библиотека поддерживается языками C, C++, PHP, Perl и многими другими. Если в системе отсутствуют утилита curl и библиотека libcurl, то можно скачать ее исходный код с домашней страницы проекта libcurl.

Эта утилита позволяет копировать файлы на удаленные компьютеры сервера, поэтому curl идеально подходит для несложного резервного копирования. В листинге 2 приведен сценарий резервного копирования, который копирует каталог с дампами базы данных на удаленный FTP-сервер.

Листинг 2. Использование curl для удаленного сохранения дампов базы данных
foreach db (mydns mysql cms tv radio)
  /usr/bin/mysqldump --ppassword --add-drop-table -Q --complete-insert $db > $db.sql 
end

find dbs -mtime -1 -type f -name '*.sql' -print | foreach file (`xargs`)
  curl -n -T $file ftp://ftp1.archive.example.com
end

Параметр -n заставляет curl использовать ваш файл .netrc. Параметр -T сообщает curl, что нужно загрузить перечисленные файлы на указанный URL-адрес. Если не указать имя для загружаемого файла, то утилита curl будет использовать для этой цели имя загружаемого файла.

Как можно догадаться, у curl еще больше настраиваемых параметров, чем у wget. Поэтому стоит ознакомиться со страницей man для curl и запомнить самое основное. Проект curl также предоставляет список примеров использования, включая инструкции по использованию HTTP-запросов POST и PUT, описание аутентификации, использования сертификатов SSL и отладке запросов curl. Мой совет: используя curl -v -trace-ascii …, можно заставить curl генерировать информацию, необходимую для отладки.

Использование защищенных подключений

Работа современных компьютерных систем в основном зависит от большого числа соединений между компьютерами разных типов, конфигурации, масштаба и с различными сервисами. Действительно, даже в небольшой сети один компьютер может использоваться как сервер электронной почты, другой как Web-сервер, третий для развертывания приложений корпоративного уровня. В подобной среде, обычно развернутой на базе локальной сети (LAN), глобальной сети (WAN) или виртуальной частной сети (VPN), часто приходится подключаться к разным компьютерам по несколько раз на день. Системные администраторы переключаются с одного компьютера на другой каждый час, но и обычные пользователи и разработчики часто осуществляют подключения удаленного доступа к важнейшим приложениям.

Поддержка X Window System и современное ПО для настольных систем сделали удаленный доступ довольно прозрачным для пользователя, так как окна почти везде ведут себя одинаково, и подобные приложения могут быть запущены на любом компьютере. Однако командная строка не теряет своей актуальности даже в мире графических интерфейсов пользователя GUI, например, для запуска одной команды сразу на нескольких компьютерах или запуска окна xterm на удаленной системе.

За удаленный доступ к компьютерам отвечает программа ssh и её модификации: scp и sftp. Утилита ssh является защищенной версией программы rsh, а программы scp и sftp являются защищенными аналогами утилиты rcp и FTP-клиента. Почему они считаются более защищенными? Программа ssh и её разновидности обеспечивают более надежные алгоритмы аутентификации и шифрует весь трафик при помощи любого из поддерживаемых криптографических алгоритмов. Даже если кто-нибудь перехватит передаваемые данные, то извлечь полезную информацию из шифрованного ssh-трафика все равно не получится.

Чтобы начать использовать ssh, достаточно ввести: ssh hostname. Эта команда соединит с удаленным компьютером с именем hostname и выдаст приглашение для ввода имени пользователя и пароля. Для подключения нужно правильно указать параметры доступа:

(www.joe.com) $ ssh web.example.com
Login: arthur
Password: ******
( web.example.com) $

Если же нужно запустить на удаленном компьютере только одну команду, то не потребуется даже входить в систему. Просто передайте нужную команду как параметр для ssh. Например, строка, показанная в листинге 3, запускает команду hostname -a -v на удаленном компьютере.

Листинг 3. Использование ssh для запуска команды на удаленной системе
(www.joe.com) $ ssh db.linux-mag.com hostname -a -v
Login: vogon
Password: ******
db
gethostname()=`db.linux-mag.com'
Resolving `db.linux-mag.com' ...
Result: h_name=`db.linux-mag.com'
Result: h_aliases=`db'
Result: h_addr_list=`64.34.170.230'

Утилита ssh открывает соединение с db.linux-mag.com и передает свой параметр hostname -a -v на удаленный компьютер, который выполняет переданную команду и возвращает результаты работы на локальный компьютер.

Функциональность ssh также предоставляет возможность копирования файлов и целых каталогов с одного компьютера на другой. Утилиту scp также легко использовать, как и утилиту cp. Например:

(www.joe.com) $ scp -p -r ~/myproject web.example.com:

Эта команда копирует каталог ~/myproject directory на компьютер web.example.com. Если не указать путь к каталогу, в который нужно скопировать данные, то они будут скопированы в домашний каталог удаленной системы. Параметр -p сохраняет время создания или последнего изменения файлов, а параметр -r включает рекурсивный режим работы, заставляя scp копировать все вложенные каталоги и их содержимое.

Другой способ достичь такого же результата показан ниже:

(www.joe.com) $ tar czf - ~/myproject | ssh www.example.com tar xvzf - 
Login: deepthought
Password: ******

Таким образом можно перенаправить канал вывода локальной команды на удаленный компьютер и наоборот.

Возможно, пользователю надоедает постоянно вводить пароли для входа в систему. Еще раз повторю, что повторяющиеся действия для входа в систему, в том числе и указание длинных имен компьютеров, просто замедляют работeу и препятствуют автоматизации процессов. К счастью, ssh поддерживает аутентификацию с открытым или закрытым ключом и задание псевдонимов (aliases) для компьютеров.

Давайте подготовим пару открытый/закрытый ключ для алгоритма шифрования DSA. Чтобы сделать это, нужно сгенерировать пару ключей, скопировать открытый ключ на удаленную систему, добавить его к списку известных ключей и проверить, что все работает, как показано в листинге 4.

Листинг 4. Создание и установка пары открытый / закрытый ключ.
1 $ cd ~
2 $ mkdir .ssh
3 $ chmod 700 .ssh
4 $ cd .ssh
5 $ ssh-keygen -t dsa 
Generating public/private dsa key pair.
Enter file in which to save the key (/home/mstreicher/.ssh/id_dsa): ./id_dsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ./id_dsa.
Your public key has been saved in ./id_dsa.pub.
The key fingerprint is:
40:6c:26:e7:53:df:d1:7b:c4:79:c5:a8:cd:6b:fe:8e mstreicher@db.linux-mag.com
6 $ ls
id_dsa  id_dsa.pub
7 $ chmod 600 *

8 $ scp id_dsa.pub www.example.com:
Login: marvin
Password: ******
id_dsa  100%  668     0.7KB/s   00:00  

9 $ ssh www.example.com
Login: marvin
Password: ******
A $ mkdir .ssh
B $ chmod 700 .ssh
C $ cd .ssh
D $ cat ../id_dsa.pub >> authorized_keys
E $ rm ../id_dsa.pub
F $ chmod 600 *
G $ logout

10 $ ssh www.example.com

a $ hostname
www.example.com
b $ logout

Команды в строках с 1-ой по 3-ую создают закрытый локальный каталог .ssh в локальном домашнем каталоге. Этот каталог должен иметь режим доступа - 700, иначе ssh не сможет использовать аутентификацию с открытым/закрытым ключом. Этапы с A по С показывают, как последовательность команд запускается на удаленном компьютере. Команда в строке 5 создает пару ключей, используя алгоритм DSA. Здесь обе идентификационные фразы (passphrase) нужно оставить пустыми. Идентификационные фразы позволяют повысить уровень безопасности, но добавляют дополнительный этап в процесс аутентификации. Команда ssh-keygen создает два файла: id_dsa (закрытый ключ) и id_dsa.pub (открытый ключ). На шаге 6 показываются созданные файлы, а шаг 7 защищает оба файла. Ваши ключи должны иметь режим доступа 0600 или 0400.

Передача специальных символов в удаленную оболочку

Давайте предположим, что нужно вывести список всех исходников на языке C в домашнем каталоге на удаленном компьютере. На локальном компьютере для этого достаточно ввеcти ls -l *.c, так что можно попробовать выполнить эту же команду через ssh:

$ ssh www.example.com ls -l *.c

Могут произойти две вещи. Если нет никаких C-файлов в текущем рабочем каталоге на локальном компьютере, то оболочка пожалуется: zsh: no matches found: *.c, или если у вас есть C-файлы в текущем рабочем каталоге, которых нет в вашем домашнем каталоге на удаленном компьютере, то оболочка на удаленном компьютере выдаст ошибку: ls: whosit.c: No such file or directory. Непонятно?

Проблема в том, что специальный символ * сначала был развернут локальной оболочкой, до того как была отправлена команда ssh. Хотя вы рассчитывали, что этот символ будет развернут на удаленной системе.

Чтобы достичь этого, вам придется помешать локальной оболочке интерпретировать специальные символы (снова). Вы можете поместить * в одиночные кавычки или использовать обратный слеш (\), чтобы воспринимался именно как *. Тогда звездочка будет передана как обычный символ в удаленную оболочку, где она будет интерпретирована в контексте удаленного компьютера.

Вот два подхода к решению этой задачи, используйте тот, который больше подходит к вашей ситуации.:

$ ssh www.example.com ls -l \*.c
$ ssh www.example.com ls -l '*'.c

Шаг 8 копирует открытый ключ на удаленный компьютер. В этот момент придется ввести пароль, но это в последний раз. Команды в строках c A по С создают закрытый каталог .ssh, и команда в строке D добавляет открытый ключ в список авторизованных ключей. Имя файла authorized_keys задано намеренно и нельзя называть этот файл по-другому. Шаг E удаляет копию ключа, шаг F защищает файлы, так же как и шаг 7.

Теперь, если выйти из системы и снова войти в нее, пароль больше не потребуется. ssh (а также scp и sftp) проверяет закрытый ключ на соответствие открытому ключу на удаленном компьютере. Если обнаружится совпадение, то учетная запись будет подтверждена и можно войти в систему без дальнейшей аутентификации.

Некоторые системы всегда будут требовать пароль, другие могут предпочесть использовать RSA, а не DSA. Узнайте у вашего системного администратора, как войти на конкретный компьютер. Системные администраторы также могут установить некоторые глобальные настройки, чтобы сделать систему более доступной.

Оставайтесь на связи

Сегодня Интернет соединяет людей повсюду разнообразными способами, прежде неизвестными в истории человечества. Обсуждаете ли вы проведенный день в своем блоге или скачиваете исходный код для нового проекта, провода уже заменили колесо в качестве средства передвижения.

Web-серфинг все еще популярный вид спорта, но чтобы освободить время для настоящено серфинга, разработчики создали решения для автоматизации различных способов передачи данных. Используя сценарии и несколько утилит UNIX, можно поддерживать и обновлять свои внешние Web-сайты и серверы для скачивания. Есть возможность скачивать и загружать файлы при помощи нескольких нажатий клавиш, делая это быстро и просто. А если создать файл .netrc, то работа еще больше ускорится и не потребуется вводить пароли.

Теперь, когда я прояснил ситуацию, выезжайте на информационную магистраль. Жду в ресторане "На конце оптического кабеля". Последний платит по счету!

Ресурсы

Научиться

  • оригинал статьи (EN).
  • Использование UNIX (EN): другие статьи этой серии.
  • curl: приемы использования Curl для скачивания с разнообразных ресурсов, используя большинство общеизвестных Интернет протоколов.(EN)
  • AIX и UNIX: раздел на сайте developerWorks с разнообразной информацией по всем аспектам системного администрирования AIX и повышения квалификации работы с UNIX.
  • Новичок в AIX и UNIX?: страница AIX и UNIX для новичков.
  • developerWorks technical events and webcasts: последние новости о событиях и Web-трансляциях сообщества developerWorks.(EN)
  • AIX 5L Wiki: среда совместной разработки документации AIX.(EN)
  • Podcasts: аудиозаписи презентаций экспертов IBM.(EN)

Получить продукты и технологии

  • wget: исходный код утилиты wget utility на сайте GNU Software Foundation.(EN)
  • Утилита curl и библиотека libcurl: исходный код утилиты curl и библиотеки libcurl.(EN)
  • IBM trial software: ознакомительные версии программного обеспечения для разработчиков, которые можно загрузить прямо со страницы сообщества developerWorks.(EN)

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=278883
ArticleTitle=Использование UNIX: Часть 3. Как превратить командную строку в универсальный инструмент
publish-date=01052008