Sunday 10 April 2016

Expect script to ssh server and do stuff, scp files to server

 #!/usr/bin/expect  
   
 set server [lindex $argv 0];  
 set folder [lindex $argv 1];  
 spawn ssh $server  
 expect "msun@$server's password:"  
 send "$env(MY_PASSWORD)\r"  
 send "mkdir -p /home/$folder\r"  
 send "exit\r"  
 interact  
 spawn bash -c "sudo scp ~/sound/*.* msun@$server:/home/$folder"  
   
 expect {  
  "Password:" {  
   send "$env(MY_PASSWORD)\r"  
   exp_continue  
  }  
  "msun@$server's password:" {  
   send "$env(MY_PASSWORD)\r"  
   exp_continue  
  }  
 }  
 sleep 1  
 exit  

In .bash_profile

 export MY_PASSWORD = "12345"  

File name is sshscp.exp
Usage: ./sshscp.exp serverName folderName

Effective Java Item 41: Overload String.valueOf(char[]) and String.valueOf(Object)

Overloading methods can hurt a lot...

 public class MyOverload {  
   public static void main(String[] args){  
     char[] a = new char[]{'a','b','c'};  
     System.out.println(String.valueOf(a));  
     Object o = new char[]{'a','b','c'};  
     System.out.println(String.valueOf(o));  
   }  
 }  

The result is

 abc  
 [C@194fa3e