Размещение следующего кода в ~ / .bashrc
работает для меня в bash. Он преобразует имя хоста в команде в адрес на основе записей в ~ / .hosts
. Если ~ / .hosts
не существует или имя хоста не может быть найдено в ~ / .hosts
, команда выполняется как обычно. Это должно работать с исходными флагами соответствующих функций и независимо от того, где размещается имя хоста относительно флагов, например ping -i 0.5 host1 -c 3
, работает.Файл ~ / .hosts
имеет приоритет перед любым другим местом для поиска имен хостов, поэтому, если есть какие-либо дублирующие имена хостов, будет использоваться адрес из ~ / .hosts
.
$ cat ~/.bashrc
function resolve {
hostfile=~/.hosts
if [[ -f "$hostfile" ]]; then
for arg in $(seq 1 $#); do
if [[ "${!arg:0:1}" != "-" ]]; then
ip=$(sed -n -e "/^\s*\(\#.*\|\)$/d" -e "/\<${!arg}\>/{s;^\s*\(\S*\)\s*.*$;\1;p;q}" "$hostfile")
if [[ -n "$ip" ]]; then
command "${FUNCNAME[1]}" "${@:1:$(($arg-1))}" "$ip" "${@:$(($arg+1)):$#}"
return
fi
fi
done
fi
command "${FUNCNAME[1]}" "$@"
}
function ping {
resolve "$@"
}
function traceroute {
resolve "$@"
}
Пример ~ / .hosts
приведен ниже. Он следует тому же формату, что и / etc / hosts
. Комментарии и пробелы обрабатываются правильно.
$ cat ~/.hosts
# addresses and hostnames
stackexchange.com se
192.168.0.1 host1 # this is host1's address
login-node.inst.ac.uk login
В последнем выпуске Windows «Fall Creators Update» можно монтировать пути UNC или любую другую файловую систему, к которой Windows может получить доступ, из WSL.
Вы можете сделать это с помощью команды mount
, как обычно, с файловой системой «drvfs
», предоставляемой WSL:
sudo mount -t drvfs '\\server\share' /mnt/share
Одиночные кавычки полезны вокруг пути UNC, так что вы не нужно избегать обратной косой черты. Вы можете монтировать в произвольный каталог; Я использовал /mnt/share
в качестве примера, но подойдет любой пустой каталог.
Все файлы будут отображаться с полными разрешениями a+rwx
777
. Реальные права доступа будут проверены, когда вы попытаетесь получить доступ к файлу, и вы можете получить ошибку в этот момент, даже если кажется, что операция должна быть выполнена успешно. Каждый читаемый файл будет рассматриваться как исполняемый.
Для местоположений, для которых требуются учетные данные, у вас есть три варианта:
net use
из командной строки или net.exe use
изнутри WSL ( cd /mnt/c
сначала для подавления предупреждения ). Вам понадобится что-то вроде net.exe use \\server\share /USER:
. Вместо этого вы можете использовать '*'
для запроса пароля. Другие конфигурации показаны с помощью net.exe help use
.Я понимаю, что саму Samba можно заставить работать и под WSL, но, поскольку хост предоставляет ту же функциональность, я бы использовал встроенную версию из Windows, когда она доступна. smbclient
в первую очередь предназначен для доступа по протоколу FTP к серверам SMB и извлечения/помещения отдельных файлов, и он должен работать, как обычно, при соответствующей настройке.