Le problème :
Je n'ai pas toujours la possibilité de déposer ma clé publique sur les serveurs distants auxquels je me connecte.
Heureusement SSHpass est là, mais comme indiqué dans la documentation, il ne s'embête pas à essayer de cacher le mot de passe.
Je n'utilise pas les solutions comme PAC Manager car leur shell intégré est moins bien que le shell que j'utilise.
Solution :
SSHpass propose l'option "-e" qui permet de lire le mot de passe depuis une variable d'environnement.
Je créé un script de connexion dans mon répertoire ~/.ssh
export SSHPASS=<mypassword>
sshpass -e ssh <myuser>@<server>
Voici le résultat du ps :
5133 5132 0 11:43 pts/0 00:00:00 sshpass -e ssh <myuser1>@server1
8892 8891 0 15:31 pts/2 00:00:00 sshpass -e ssh <myuser2>@server2
Le problème :
Je réalise des copies de fichiers d'un poste Windows à un autre en Remote Desktop, celle-ci échoue au milieu du transfert de façon aléatoire.
Comme les fichiers copiés étaient gros, j'ai mis ça sur le compte du réseau... ERREUR !!!
Pour compléter le tableau, mon Windows tourne dans une VM (eh oui je suis passé sous Linux, je vous raconterai ça une autre fois).
Solution :
J'ai remarqué qu'en faisant Ctrl+C cela interrompait la copie...
quelques secondes de méditation plus tard... Tilt !
Le presse-papier de VirtualBox était en mode partagé, donc dès que je copiais quelque chose sous Linux.... la VM était notifiée...
Et comme, Ô joie, la copie distante sous Windows c'est un peu un presse-papier amélioré => annulation de la copie....
Donc j'ai désactivé la synchronisation des presse-papiers... tout roule... Tadaaaarrrh.....
Le problème :
Pour gérer plusieurs profils réseaux, j'utilise squid avec une configuration par profil. (Le NetworkManager de debian appelle un script lorsqu'une interface devient disponible, ce script met à jour la configuration squid et le redémarre).
Je voulais donc naturellement faire passer mes connexions SSH au travers de ce proxy.
Après configuration du .ss/config ainsi :
Host *
ServerAliveInterval 240
ProxyCommand corkscrew localhost 3128 %h %p
Compression yes
J'obtenais l'erreur : Couldn't establish connection to proxy: Connection refused
J'ai testé les commandes :
corkscrew localhost 3128 <mon serveur> 22
Après avoir compris que corkscrew utilise nc :
nc -vv localhost 3128
Toujours le même refus.
Solution : quel client ?
En réalité après avoir trouvé que corkscrew utilise nc les réponses sont plus nombreuses sur le net : aide
Le problème vient du fait que j'utilise Debian qui doit avoir une configuration particulière et Squid écoute exclusivement sur IPV6 :
netstat -tulnap | grep 3128
avec tcp6 dans la ligne :
tcp6 0 0 ::1:3128 :::* LISTEN -
Donc astuce squid3, modifier la configuration pour écouter sur une adresse IPV4, dans /etc/squid/squid3.conf :
http_port 0.0.0.0:3128
Ca devrait être corrigé bienôt : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=584
Problem
For once, an english post as I saw many other person interest in this problem.
I just migrate from Windows to Linux, as many others, lot of little things to do to have fully functional desktop... a next post to describe this.
One of the most annoying thing was the "middle click" in terminal... Not used to, I scroll when I want to paste...
No problem, I looked for a terminal with this option.. but no one found on google !!.
Solution (since Terminator 1.0)
Just check the box "PuTTY paste mode" in the preferences, thanks for authors !
Also to display the menu on Cinnamon : shift + right click + left click (or try any of ctrl/shift + right, left, middle click)
Solution (before Terminator 1.0)
I installed Terminator, following many advices, not bad at all, except this annoying menu on right click...
I saw a feature request but author will do it maybe, one day or if someone offers this feature in option with GUI configuration, etc...
Looking for Terminator plugins system, I noticed it was coded in Python, yeah !
Few minutes later, as root :
sudo apt-get install terminator
sudo vi /usr/share/terminator/terminatorlib/terminal.py
Look for the following function :
def on_buttonpress(self, widget, event):
"""Handler for mouse events"""
# Any button event should grab focus
widget.grab_focus()
if event.button == 1:
# Ctrl+leftclick on a URL should open it
if event.state & gtk.gdk.CONTROL_MASK == gtk.gdk.CONTROL_MASK:
url = self.check_for_url(event)
if url:
self.open_url(url, prepare=True)
elif event.button == 2:
# middleclick should paste the clipboard
self.paste_clipboard(True)
return(True)
elif event.button == 3:
# rightclick should display a context menu if Ctrl is not pressed
if event.state & gtk.gdk.CONTROL_MASK == 0:
self.popup_menu(widget, event)
return(True)
return(False)
I invert button test, and that's all : menu on middle click, paste on right click.
Here is the difference :
def on_buttonpress(self, widget, event):
...
if event.button == 1:
...
elif event.button == 3:
...
elif event.button == 2:
...
return(False)
With Clipman on XFCE to synchronize selection clipboard and X clipboard, it suits my needs for now.
Le problème :
La base H2 intègre un mode SERVEUR comme Hsqldb ou Derby, mais aussi un mode mixe qui permet au premier client connecté à la base de démarrer un serveur.
Très pratique, en utilisant un client quelconque , on peut se connecter au serveur !
Deux problèmes :
-
quel client ?
-
le mode serveur, OK, mais il ne fonctionne pas avec la base mémoire embarquée !
Solution : quel client ?
Tombé un peu par hasard dessus : ici sur stackoverflow
Il y a une liste ici : http://h2database.com/html/links.html#tools
La console WEB n'est pas intégrée au driver H2, même si dans la librairie H2 il y a la console H2 ; au départ je pensais qu'on aurais pu y accéder en tapant l'URL de la base de données + /console par exemple :)
Pour la console H2 :
-
soit vous avez le raccourci si vous avez installé H2, cf la doc
-
soit via le jar : java org.h2.tools.Console -web -browser
-
sinon, on peut la démarrer tout simplement :
import java.sql.SQLException;
import org.h2.tools.Console;
public class H2Client {
public static void main(String[] args) {
try {
new Console().runTool();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Entrer l'url indiquée dans la configuration ou affichée lors du lancement du serveur pour la base mémoire.
Solution : serveur et base mémoire ?
Idem, dans le même post : ici sur stackoverflow
Sur disque
Ajouter AUTOSERVER=TRUE à la fin de la déclaration de la base de données :
Exemple :
jdbc:h2:~/my-database/db2;AUTO_SERVER=TRUE
En base mémoire
Il faut démarrer le serveur dans la JVM qui utilise la base mémoire embarquée :
Pour la déclaration base mémoire classique :
Server server = Server.createTcpServer().start();
System.out.println("URL du serveur H2 : jdbc:h2:" + server.getURL() + "/mem:test");
Notez le "mem:test" à la fin de l'URL, à adapter si vous modifier la votre.
En fin de démarrage de Spring Boot, ça donne :
@Bean
public Server initH2Server() {
try {
Server server = Server.createTcpServer().start();
System.out.println("URL: jdbc:h2:" + server.getURL() + "/mem:test");
return server;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
Fil RSS des articles