Automatyczne przełączanie z Wifi na kabel


(Konradsala98) #1

Witam

Czy jest możliwość zrobić tak?

-że podczas wyłączenia Wi-Fi za pomocą przycisku na klawiaturze (fn+f3), automatycznie włączany by był interfejs eth0.

I tak poza tym teraz np. Jak wpisze ifconfig wlan0 down/up to jest takie coś:

'wl0 link up' i jakieś numerki

-Czy to jest normalne?

Dodam że instalowałem wcześniej wpasupllicant.(może to jest z tym związane?)

Z góry dziękuje.

Konndziorex


(Pompon7) #2

Jedyny pomysł jaki mi przychodzi to zrobienie skryptu , który to wykona , i później przypisać to do kombinacji klawiszy .

Być może , ktoś ma lepszy pomysł niż ja?


(Konradsala98) #3

A da się przypisać ten skrypt żeby się wykonał przy kombinacji fn+f3?:0


(Pompon7) #4

Da się np. na Xfce4 , wchodzisz w ustawienia klawiatury i tam masz skróty klawiszowe i przypisujesz tego skrypta . Oczywiście musisz zadbać o uprawnienia do tego .


(Konradsala98) #5

Ok, sprawdze wieczorem.

BTW jak mam zwykłego użytkownika, i coś chcę zrobić to pisze brak dostępu.

Dodałem go do /etc/sudousers , ale nie wiem czy to ma sens bo po wpisaniu hasła do tego konta i tak moge robić wszystko jak root.

Jedynie jak np. Wpisze ifconfig lub inne polecenia bez sudo to wtedy wyskakuje ‘nie znaleziono polecenia’

Czy to ma sens z tym sudo?

Bo niewiem czy dobrze umieściłem tego użytkownika w tym pliku.


(Pompon7) #6

Ma , w swoim skrypcie te komendy wykonuje z poziomu użytkownika z uprawnienia . Testowałem i działa mi manulnie(z terminala) i z przypisanych klawiszy . Ma sens, sudo jest bezpieczniejsze i ma swoje zalety np nieinterktywne podawanie hasła do sudo .Jest użyteczne w skryptach .

Masz tu zrzut z mojego pliku (sudoers):

########

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

root    ALL=(ALL:ALL) ALL
smieszek ALL=(ALL:ALL) ALL

################

Co do “nie znaleziono polecenia” jest to wynikiem że potrzebujesz uprawnień root’a musisz zmienić zawartość zmiennej PATH (tak gdzie są wyszukiwane komendy).

Osobne katalogi z binkami są dla roota i zwykłego usera .

Jak nie rozumiesz zasady działania skryptu lub czegoś innego śmiało pytaj .


(Konradsala98) #7

Co do skryptu , to będę jeszcze testował.

Czyli wszystko u mnie ok z tym sudo? :smiley:

Ja mam tak samo z tym sudo ustawione ALL(ALL:ALL)

Ale po wpisaniu hasła, i tak można coś zepsuć jak na roocie.

A jak dodam np. binarke ifconfig do katalogu zwykłego usera, to wtedy moge wykonywać to polecenie bez sudo?

A jeszcze można zrobić tak że w pliku /etc/passwd do zwykłego usera dodaemy liczbę 1010 i są podwyższone uprawnienia. Pamiętam to bo w szkole podmnieniałem, bo konto ograniczone było.


(Pompon7) #8

Co do dostępności komend , tu masz zawartość zmiennej PATH ze względu na użytkownika :

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games ##zwykle user
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin #root

a teraz spójrz gdzie jest "polecenie " ifconfig :

komenda : 

whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

Dzieje się tak przez FHS(File System Hierarchy) , każdy katalog (z tych głównym np /media) ma inne przeznaczenie .

I te dostępne polecenia masz właśnie w zmiennej “PATH” (można jej zawartość modyfikować ) .

W zależności też od dystrybucji i użytkownika  te katalogi (z  tych głównych) są dostępne w zmiennej “PATH” .

W tym wypadku musiałbyś albo ręcznie przez ścieżkę ( wyszukaj za pomocą: whereis nazwa lub find / -name nazwa) lub przez właśnie dodanie tego katalogu do zmiennej “PATH”

W przypadku sudo powinieneś mieć ( w najprostszej konfiguracji )

nazwa użytkownika ALL=(ALL:ALL)ALL

Polecam poczytać o sudo i jego konfiguracji np stąd : https://wiki.archlinux.org/index.php/Sudo

Co do tego sposobu z passwd nie słyszałem .

Jeśli masz jakieś pytanie , to śmiało zadaj :slight_smile:


(Konradsala98) #9

A dodanie katalogu do zmiennej, można zrobić tak ?

echo /usr/katalog >> $PATH

(Pompon7) #10

z komendy :

Na stałe

echo "export PATH=\"$PATH:/katalog\"" >>~/.bashrc #z poziomu zwykłego użytkownika

lub ręcznie

edytor tekstu ~/.bashrc i na końcu(najlepiej) dodaj wiersz:
export PATH="$PATH:/katalog" #z poziomu zwykłego użytkownika

Tymczasowo

komenda:

export PATH="$PATH:/katalog"

BTW:

1.Jak zmieniałeś te uprawnienia przez dodanie numeru do /etc/passwd ( czy być może UID)?

2.Czy skrypt działa i spełnia twoje oczekiwania?


(Drobok) #11

Wszelakie skrypty / wyniki poleceń omieszkamy w tagu:

[code]
[/code]

Następne posty z skryptami bez w/w tagu będą usuwane.


(Konradsala98) #12

Skrypt ok.

Mam pytanie co do tego skryptu.

Po co dałeś przekierowanie błędów do /dev/null?

I po co jest to?

Sudo bash -c "$1"

Co do tego /etc/passwd to musiałem z live cd , chrootem wejść w ten plik i tam dałem 1010, tylko właśnie nie pamiętam czy w rubryce UID czy GID.

Zobacz i daj mi znać jak coś.


(Pompon7) #13

Masz kod:

#!/bin/bash
password="twoje_hasło_sudo"
function run()
{
    echo $password | sudo -S echo " " 2>/dev/null
    sudo bash -c "$1"
}
run "dhclient -r wlan0 ; ifconfig wlan0 down ; ifconfig eth0 up ; dhclient eth0"

Po kolei ,fragment:

    echo $password | sudo -S echo " " 2>/dev/null

Powoduje ,    że wykonujesz polecenia z pomocą sudo podając hasło nie interaktywnie (użyteczne w skryptach) . Przekierowanie błędów jest po to by nie wyświetlało ich, jest to użyteczne gdy chce np status wykonanego polecenia .

    sudo bash -c "$1"

Powoduje , że wywołujesz polecenia z uprawnieniami root’a przez sudo, “$1” -pierwszy parametr w tym przypadku funkcji .Następnie by obejść pewnego problemu np . przekierowanie z pomocą sudo pliku na sciezke np /etc . Wywoływane jest polecenie z podwyższonymi uprawnienia jako root . I na końcu wywołujesz funkcje z argumentami, dodatkowo ładniejszy kod i wygodniejsze to z poziomu funkcji , raz piszesz używasz razy ile chcesz  . Jak byś w przyszłości potrzebował pomocy pisz na nr. gg: 8463915.

Jak coś nie jasno napisałem , to pisz o wytłumaczenie jak wszystko jest w porządku to wątek do zamknięcia :slight_smile:


(Konradsala98) #14

Tak, temat można zamknąć.