Linux: Połączenie przez Remote Desktop

2023-07-20

Wydaje się, że Remote Desktop Protocol, to rozwiązanie raczej ze świata Windows i z Linuxem mu nie po drodze, ale… czasami inaczej się nie da.

Zaczynamy od zainstalowania xrdp:

sudo apt-get update
sudo apt-get install xrdp

XRDP porzebuje oczywiście nasłuchiwać na porcie 3389, dlatego trzeba otworzyć ten port:

sudo ufw allow 3389/tcp

Teraz można uruchomić XRDP:

sudo systemctl restart xrdp

Teraz po stronie klienta, czyli zazwyczaj na komputerze z Windows można nawiązać połączenie przez RDP. Wystarczy podać nazwę użytkownika z Linuxa i zalogować się. Czasami zdarza się, że otrzymujemy po prostu puste okno/ekran, albo sesja początkowo poprawnie nawiązywana nagle się skończy. W takim przypadku:

  • upewnij się, że na systemie Linux nie ma w tej chwili aktywnej sesji GUI
  • w pliku .xsession dodaj linijkę definiującą odpwiedniego managera okien, np.:
    gnome-session –session ubuntu
By Rafał Kraik in Linuxy

Linux: Podłączenie do wybranej sieci WiFi

2023-07-20

Przenosząc swój komputer między różnymi sieciami WiFi, chcesz czasami wyraźnie wskazać, do której sieci należy się podłączyć. Jeśli korzystasz z GUI, to nie ma z tym problemu. Co innego, jeśli pracujesz w linii komend. Oto krótka ściąga, co można zrobić w takim przypadku.

Włączanie i wyłączanie WiFi

Polecenie

wifi on

pozwala na włączenie lub wyłączenie WiFi. Istnieją też krewniacy tej komendy, jak np. bluetooth czy nfc:

Wyświetlenie zdefiniowanych połączeń WiFi

Komenda

nmcli connection

okazuje skonfigurowane na komputerze połączenia (sieci wifi, do których kiedyś tam nawiązano już połączenie). Aktualnie podłączona sieć jest zaznaczona kolorkiem i ma wartość w kolumnie DEVICE, wskazującą na urządzenie, przy pomocy którego zestawiono to połączenie.  Tutaj widać np. aktywne połączenie do sieci Taxi przy pomocy urządzenia/interfejsu wlp1s0:

Listowanie dostępnych sieci WiFi

Polecenie

nmcli device wifi list

wyświetla w tej chwili dostępne sieci WiFi. Tutaj widać, że najlepszym jakościowo dostępnym połączeniem jest Taxi, podczas gdy np. T-Mobile-B528-06DA ma gorszą jakość:

Podobne działanie ma komenda wlist. Pierwszy argument wskazuje na nazwę urządzenia/interfejsu, tak jak został on rozpoznany przez Linuxa:

iwlist wlp1s0 scanning

Przełączenie do innej sieci

Tutaj przyda się znowu polecenie nmcli, np. aby podłączyć się do sieci BURMISTRZ użyj:

sudo nmcli device wifi connect BURMISTRZ

Jeśli byłoby to pierwsze połączenie to można tu jeszcze dodać parametr password:

sudo nmcli device wifi connect BURMISTRZ password XXXXXX

Sprawdzenie, czy jesteśmy we właściwej sieci wykonasz komendą

nmcli connection

lub

nmcli device wifi list

Aktywne połączenie będzie oznaczone kolorem lub gwiazdką

Uwagi i wskazówki

Jeśli chcesz „zapomnieć” połączenie użyj komendy delete, np.:

sudo nmcli connection delete "Olympik Hotels"

Jeśli sieć WiFi nie jest pokazywana przy poleceniu listującym sieci, to możesz dodać parametr –rescan:

nmcli device wifi list --rescan yes
By Rafał Kraik in Linuxy

Git – tworzenie nowego repozytorium na GitHub

2023-07-17

Załóżmy, że masz już lokalnie, na swoim komputerze pliki projektu, które chcesz umieścić w nowym repozytorium na GitHub. W takim przypadku propnuję rozpocząć od utworzenia nowego repozytorium na GitHub, co jest proste, bo to klikanie myszką. Teraz jednak chcielibyśmy do tego repozytorium wysłać lokalne pliki. Można to zrobić tak:

1. Przejdź do katalogu, w którym masz swoje pliki:

cd my_project

2. Teraz zainicjuj tworzenie nowego repozytorium, które jednak powstanie lokalnie:

git init
Initialized empty Git repository in C:/temp/test_repo/.git/

3. Teraz jeśli chcesz, to umieść w tym katalogu odpowiedni plik .gitignore. Potem możesz dodać do wysłania na repo wszystkich kwalifikujących się do tego plików z lokalnego katalogu:

git add .

4. Już na tym etapie można sprawdzić, że nowe repozytorium zostało utworzone i jesteś aktualnie w branch master:

git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: app.py

5. Jeśli jeszcze wcześniej nie zostało to zrobione, to należy zaktualizować co najmniej dwie zmienne: user.email i user.name:

git config user.email email@domain.pl
git config user.name myusername

6. Wartości możesz wyświetlać używając parametru –get

git config --get user.email
email@domain.pl
git config --get user.name
myusername

7. Teraz trzeba jakoś połączyć ze sobą to lokalnie utworzone repozytorium, z tym zdalnym repozytorium, które znajduje się na GitHub:

git remote add origin https://github.com/username/test_repo

8. Możemy przejść do utworzenia pierwszego „commita”:

git commit -m "initial"
[master (root-commit) ff6795c] initial
1 file changed, 1 insertion(+)
create mode 100644 app.py

9. Na tym etapie można już połączyć lokalny branch master ze zdalnym branchem master:

git push --set-upstream origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 200 bytes | 200.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/username/test_repo
* [new branch] master -> master
branch 'master' set up to track 'origin/master'.

W ten oto sposób pliki z katalogu lokalnego zostały wysłane na repozytorium na GitHub!

By Rafał Kraik in SQL

Python – Jupyter – uruchamianie w innym katalogu

2023-07-12

Zdarza się, że chesz, aby Jupyter startował w innym katalogu niż domyślny. Są na to metody polegające na zmianach w pliku konfiguracyjnym, ale nie wygląda na to aby to działało (przynajmniej pod Windows). Za to co pomogło:

  1. Wpisz w menu start Jupyter, a kiedy program zostanie znaleziony naciśnij go prawym przyciskiem myszy i wybierz „Otwórz lokalizację pliku”
  2. W katalogu, który został otworzony, znowu kliknij prawym przyciskiem myszy na ikonce odpowiadającej za Jupyter i wybierz „właściwości”
  3. Teraz w polu „Element docelowy” wykasuj znajdujący się na końcu wpis %USERPROFILE% i wpisz oczekiwaną ścieżkę. W moim przypadku wpisałem „e:/” (Uwaga na kierunek slasha)
  4. Zapisz zmiany klikając OK i gotowe

U mnie zadziałało od strzału!

By Rafał Kraik in Python

Linux: Raspberry Pi: sesja SSH zawiesza się po pytaniu o hasło

2023-06-11

Logujesz sie do raspberry pi przez ssh (np. Putty), a tu po pytaniu o nazwę użytkownika i hasło sesja się zawiesza. Ping wysyłany na adres komputera działa normalnie.

Oczywiście przyczyn może być wiele, ale w moim przypadku rozwiązanie było dość zagadkowe. Otóż w pliku /etc/ssh/sshd_config wystarczyło dopisać:

IPQoS cs0 cs0

Niektórzy twierdzą, że taką zmianę należy wykonać jeszcze w pliku /etc/ssh/ssh_config, ale u mnie nie trzeba było.

Ot – takie „czary mary”

https://forums.raspberrypi.com/viewtopic.php?t=183661

https://community.element14.com/products/raspberry-pi/f/forum/47549/b-ethernet-problem-ping-works-but-not-able-to-ssh

By Rafał Kraik in Linuxy

Linux: Raspberry pi: Interfejs sieciowy w statusie DORMANT. Wyłączenie trybu oszczędzania energii

2023-06-11

Czasami mam wrażenie, że producenci sprzętu mają konika na punkcie oszczędzania energii. Tak – oszczędność energii jest ważna, ale nie po to kupujemy drogi wydajny sprzęt, żeby potem korzystać z niego tylko na 50%, bo jesteśmy w trybie oszczędzania energii.

W Raspberry Pi tryb oszczędności można włączyć dla poszczególnych urządzeń osobno. W szczególności można to zrobić dla karty sieciowej. Dzięki temu karta włączy się dopiero wtedy, gdy będą spełnione inne warunki, które są konieczne do rozpoczęcia w pełni funkcjonalnej pracy. Dokładniej rzecz biorąc, karta sieciowa zacznie pracować z około 30 sekundowym, może 60 sekundowym opóźnieniem. Na tyle to mało, że energii w tym czasie wcale się dużo nie zużyje i na tyle dużo, żeby doprowadzić administratora do szewskiej pasji.

Jak wyłączyć oszczędzanie energii dla karty sieciowej? Wystarczy uruchomić polecenie:

/sbin/iwconfig wlan0 power off

Problem tylko w tym, że zmiana wprowadzana przez tą komendę jest zapamiętywana do kolejnego uruchomienia, a potem znowu oszczędzasz energię. No ale od czego jest plik /etc/rc.local? Ten plik, to skrypt, który zostanie uruchomiony po starcie systemu, można więc włożyć tę komendę właśnie tam, przed ostatnim poleceniem exit 0.

https://raspberrypi.stackexchange.com/questions/96606/make-iw-wlan0-set-power-save-off-permanent

https://pl.wikipedia.org/wiki/Rc.local

https://forums.raspberrypi.com/viewtopic.php?t=336276

Disable WIFI Power Save on Raspbian Jessie

  • Use iw wlan0 get power_save to see if the wifi power save feature is enabled or not
  • If you want to permantently disable it add this to the /etc/network/interfaces after the iface wlan0 line wireless-power off
  • Reboot and if you run iw wlan0 get power_save you should see that is off.

https://raspberrypi.stackexchange.com/questions/107463/raspberry-pi-3-b-with-buster-cant-be-pinged-wlan0-stuck-in-dormant

Wyjaśnienie trybu DORMANT z https://askubuntu.com/questions/1194048/what-does-mean-dormant-mode-in-ip-link-show-wlan0

Mode Type

The default mode type is called DEFAULT. When an interface is in DEFAULT mode, the interface state transitions to UP when the following condition is met:

Link is detected

There is also a mode type called DORMANT. When an interface is in DORMANT mode, there are additional criteria for the interface state to transition to UP. In DORMANT mode, the interface state transitions to UP when both of the following conditions are met:

Link is detected
MLAG has finished setting up everything for the bond

Link State

In the context of link state, DORMANT indicates the interface is not in a condition to pass packets but is instead in a pending state waiting for some external event. For an interface to be usable for forwarding, it should be in an UP state as it is in the output shown above.

By Rafał Kraik in Linuxy

Terraform: Błąd grpc: error while marshaling: string field contains invalid UTF-8

2023-06-10

Podczas wykonywania polecenia

terraform apply

pojawia się błąd

grpc: error while marshaling: string field contains invalid UTF-8

Nie jest on jako tako związany z kodem, który aktualnie ma być aplikowany. Spróbuj zaktualizować wersję AZ CLI. Zrobisz to poleceniem

az upgrade

 

By Rafał Kraik in Azure