Как автоматически переключать принтеры по умолчанию в зависимости от вашего местоположения

. Интересно, можно ли автоматически переключить принтер по умолчанию в соответствии с сетью Wi-Fi, к которой подключен компьютер.

Очевидно, Windows имеет эту функцию

3
задан 16 April 2018 в 12:16

3 ответа

Алессандро, мне стыдно за то, как долго я терпел одно и то же раздражение, прежде чем понял, насколько это было чертовски просто...!

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

Чтобы установить его, откройте терминал и введите следующее (вам не нужно вводить «#» и номер после него):

sudo apt install autorandr #1
mkdir -p ~/.config/autorandr && cd ~/.config/autorandr #2
git clone https://github.com/Noughtnaut/noughty-autorandr.git #3
autorandr -s some_name_here #4

и все готово. Вот что вы только что сделали:

  1. Установите пакет autorandr, который автоматически запускается всякий раз, когда вы (отключаете) дисплей от сети. Если вы предпочитаете, вы также можете сделать это с помощью графического менеджера программного обеспечения.
  2. Создайте папку для локальной конфигурации программы и перейдите к ней.
  3. Загрузите мою надстройку, которая управляет настройками принтера по умолчанию. Важно, чтобы это делалось внутри папки ~/.config/autorandr.
  4. Сохраните текущие настройки, включая настройки принтера по умолчанию. Затем, когда вы доберетесь до офиса или любого другого места с определенной настройкой монитора, вы снова запустите эту же команду с другим именем для каждого профиля.

Впредь ваш ноутбук будет автоматически менять принтер по умолчанию.

-1
ответ дан 22 November 2020 в 00:17

Для этого ответа не нужны привилегии sudo

Я предполагаю, что у вас есть два места с подключениями WiFi и два разных сетевых принтера. Ваш ноутбук настроен для подключения к этим двум WiFi-соединениям. Вы также настроили принтер вашего ноутбука на два принтера, и вы можете печатать на этих двух принтерах при подключении к соответствующим сетям WiFi.

Для простоты я буду называть:

  1. Первую сеть WiFi «HomeWiFi», а связанный с ней принтер – «HomeWiFi». «Домашний принтер».
  2. Вторая сеть WiFi «OfficeWiFi» и соответствующий принтер «Офисный принтер».

Я написал bash-скрипт, который я назвал changedefaultprinter.sh. Вы можете назвать файл как хотите и отредактировать его по своему усмотрению. Вам понадобятся имена WiFi и принтеров в скрипте, чтобы он работал.

Скрипт

#!/bin/bash
# File name: changedefaultprinter.sh 
# Purpose: Change the default printer to home or office based on WiFi

############################
# User modification section
# Add WiFi and Printer pairs below:
WIFI1="HomeWiFi"
PRINTER1="HomePrinter"

WIFI2="OfficeWiFi"
PRINTER2="OfficePrinter"

# End of user modification section
############################

CURRENTWIFI=$(iwgetid -r)             # Get the name of the current WiFi 

if   [[ ! $CURRENTWIFI ]]; then         # Not on WiFi
    echo "Could not find any WiFi, exiting..."
    exit 0
elif [[ $CURRENTWIFI == $WIFI1 ]]; then
    echo "Found $WIFI1, Setting $PRINTER1 as the default..."
    lpoptions -d $PRINTER1
elif [[ $CURRENTWIFI == $WIFI2 ]]; then
    echo "Found $WIFI2, Setting $PRINTER2 as the default..."
    lpoptions -d $PRINTER2
else
    echo "On unknown WiFi, exiting..."
    exit 0
fi

Как использовать:

  1. Скопируйте скрипт в файл changedefaultprinter.sh и сохраните его в папке /home/$USER/bin. Если у вас нет папки bin, сначала создайте ее. Сделайте файл «исполняемым». См. Как сделать файл исполняемым?

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

Убедитесь, что вы подключены к домашнему Wi-Fi и домашний принтер установлен по умолчанию. Откройте терминал, нажав Ctrl+Alt+T и введите команду:

iwgetid -r

Это должно показать вам имя вашего WiFi. Скопируйте это имя из терминала и вставьте его в файл выше, где указано HomeWiFi.

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

lpstat -t

Вы увидите что-то вроде:

scheduler is running
system default destination: HomePrinter 

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

  1. Теперь отнесите ноутбук в офис и повторите тот же процесс, чтобы ввести в сценарий имена вашего офисного WiFi и принтера Office по умолчанию. Замените OfficeWiFi и OfficePrinter в скрипте.

Попробуйте:

В терминале введите команду при подключении к домашнему Wi-Fi:

changedefaultprinter.sh

Если все пойдет хорошо, вы увидите сообщение о том, что ваш принтер по умолчанию теперь настроен на ваш домашний принтер. Сделайте то же самое в офисе, чтобы убедиться, что это работает и там.

Заставьте скрипт запускаться при входе в систему на ноутбуке

Откройте приложение «Настройки запуска приложения» и нажмите кнопку Добавить

enter image description here

Добавьте осмысленное имя скрипта, чтобы вы знали, что он делает , а также расположение скрипта:

/home/$USER/bin/changedefaultprinter.sh

Где $USER — ваше имя пользователя.

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

2
ответ дан 22 November 2020 в 20:27

Для этого ответа нужны привилегии sudo

Я предполагаю, что у вас есть два места с Wi-Fi и два разных сетевых принтера. Ваш ноутбук настроен для подключения к этим двум WiFi-соединениям. Вы также настроили принтер вашего ноутбука на два принтера, и вы можете печатать на этих двух принтерах при подключении к соответствующим сетям WiFi.

Для простоты я буду называть:

  1. Первую сеть WiFi «HomeWiFi», а связанный с ней принтер – «HomeWiFi». «Домашний принтер».
  2. Вторая сеть WiFi "OfficeWiFi" и соответствующий принтер «Офисный принтер».

Я написал bash-скрипт, который назвал 10-changedefaultprinter. Вам нужно будет добавить свое имя пользователя и имена WiFi и принтеров в скрипт, чтобы он заработал.

Скрипт

#!/bin/bash
# File name: 10-changedefaultprinter 
# Purpose: Change the default printer to home or office based on WiFi
# Instructions: 
#   1.  sudo chown root:root 10-changedefaultprinter
#   2.  sudo chmod 744 10-changedefaultprinter
#   3.  sudo ln -s 10-changedefaultprinter' /etc/NetworkManager/dispatcher.d
# 
############################
# User personalization section

USERNAME="your_username_goes_here"

# Add WiFi and Printer pairs below:
WIFI1="HomeWiFi"
PRINTER1="HomePrinter"

WIFI2="OfficeWiFi"
PRINTER2="OfficePrinter"

# End of Personalization
############################

# Network Manager sets this value
ACTION=$2

CURRENTWIFI=$(iwgetid -r)             # Get the name of the currrent WiFi 

if   [[ ! $CURRENTWIFI ]]; then         # Not on WiFi
    echo "Could not find any WiFi, exiting..."
    exit 0
elif [ $CURRENTWIFI == $WIFI1 ] && [ "$ACTION" == "up" ]; then
    echo "Found $WIFI1, Setting $PRINTER1 as the default..."
    sudo -u $USERNAME lpoptions -d $PRINTER1
elif [ $CURRENTWIFI == $WIFI2 ] && [ "$ACTION" == "up" ]; then
    echo "Found $WIFI2, Setting $PRINTER2 as the default..."
    sudo -u $USERNAME lpoptions -d $PRINTER2
fi

Как использовать:

  1. Скопируйте скрипт в файл 10-changedefaultprinter и сохраните его в папке /home/$USER/.Если вы сохраните его в другом месте, например /home/$USER/bin, используйте команду cd /home/$USER/bin, чтобы изменить текущий каталог в терминале перед использованием команды с префиксом sudo ниже.
  2. Отредактируйте файл и добавьте свою личную информацию. Замените your_username_goes_here на ваше имя пользователя. Вы можете найти имя пользователя, набрав echo $USER в терминале.
  3. Узнайте названия вашей сети Wi-Fi и принтеров по умолчанию, которые вы уже настроили. Вы можете сделать это разными способами. Я использую терминал и следующие команды:

Убедитесь, что вы подключены к домашнему Wi-Fi и домашний принтер установлен по умолчанию. Откройте терминал, нажав Ctrl+Alt+T и введите команду:

iwgetid -r

Это должно показать вам имя вашего WiFi. Скопируйте это имя из терминала и вставьте его в файл выше, где указано HomeWiFi.

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

lpstat -t

Вы увидите что-то вроде:

scheduler is running
system default destination: HomePrinter 

Скопируйте имя принтера из терминала и вставьте его в файл выше, где написано ГлавнаяПринтер.

  1. Теперь отнесите ноутбук в офис и повторите тот же процесс, чтобы ввести в скрипт имена вашего офисного WiFi и принтера Office по умолчанию. Замените OfficeWiFi и OfficePrinter в скрипте.
  2. Измените владельца, разрешения и создайте символическую ссылку на предполагаемое местоположение.

Используйте терминал и следующие команды:

sudo chown root:root 10-changedefaultprinter
sudo chmod 744 10-changedefaultprinter
sudo ln -s 10-changedefaultprinter /etc/NetworkManager/dispatcher.d

Вы можете скопировать с помощью команды cp или переместить с помощью команды mv вместо создания символической ссылки с помощью ln -s выше.

Попробуйте:

Попробуйте это дома или в офисе:

  1. Временно измените принтер по умолчанию на «неправильный».
  2. Отключитесь от сети Wi-Fi и снова подключитесь.

Если все пойдет хорошо, ваш принтер по умолчанию изменится в зависимости от сети Wi-Fi, к которой вы подключены. С этого момента ваш принтер по умолчанию будет меняться в зависимости от того, какой WiFi вы используете.

Если это не работает, проверьте системный журнал и найдите строки с nm-dispatcher на наличие ошибок.

Надеюсь, это поможет

2
ответ дан 24 November 2020 в 18:42

Другие вопросы по тегам:

Похожие вопросы: