void telnetRequest(char outputString[40])
Was ist denn das für ein Programmier-Standard, aus welchem Handbuch stammt denn sowas?
Der String muss doch vorher schon deklariert sein, wenn er an die Funktion übergeben wird, wozu deklarierst Du da nochmal 40 Bytes RAM-Speicher auf dem Stack?
Die übliche Übergabekonvention für C-Strings / char-Arrays ist, dass ein Pointer auf das char-Array an die Funktion übergeben wird. Das sähe dann so aus:
void telnetRequest(char *outputString)
Außerdem ist das wohl etwas mit dem Ethernet-Shield, was Du da machst, dann sollte zwischen dem Senden des Strings und dem client.stop wohl dem Netzwerkchip ein kleines wenig Zeit gegeben werden, die Zeichen tatsächlich zu senden, bevor die Verbindung geschlossen wird. Ich würde es mal probieren mit:
ips_client.print(outputString); //sendet String zum Server
delay(5);
ips_client.stop();